181119_(月) - PassionOfStudy/Algorithm GitHub Wiki

Programmers_(Caesar Cipher)

시저 암호 Caesar Cipher

----> 실패... (signal: illegal instruction (core dumped)) -> test case: 2,4,6,9,10,12,13 )

My Solution

처음에는 유니코드값을 가지고 접근하려고 했다. 입력 받은 문자를 unicode값으로 바꾼 다음 입력받은 shift n값 만큼 더한 후, 더한 unicode값을 다시 문자로 되돌리는 방법이었다. C언어에서는 바로 유니코드 값으로 변환해주는 것이 가능했지만 swift에서는 바로 변환해주는 방법은 나와있지 않았다. 이것 저것 구글링을 통해서 문자를 Unicode.Scalar타입에 넣어서 Optional(UInt32)값으로 추출하는 것 까지는 성공했다.

하지만 입력받은 n만큼 shift하는 방법과 Scalar값을 다시 문자로 되돌리는 방법을 찾지 못했다.

결국에는 고민하다가 A~Z, a~z까지의 배열을 생성한 후, 인덱스값을 통해 shift만큼 인덱스를 더해서 구하는 것으로 방법을 바꿨다.

결과적으로 xcode에서 실행해 보았을 때는 문제없이 성공했다. 하지만 Programmer에서는 실행에서 통과하였지만 채점을 할 때 signal: illegal instruction (core dumped)오류로 실패했다. 원인은 찾지 못했다... ㅠㅠ

Other Solution

나중에 실패의 원인을 찾게되면 다른 분들의 풀이를 보면서 정리하겠다.

%

시저암호 문제는 기본적인 알고리즘 문제로 많이 보인다. 구글링을 통해서 다양한 문제해결방법들을 찾아봐야겠다.