문제링크 : 프로그래머스 1단계 시저암호
설명 : 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식
입출력 예시
"AB", 1 => "BC"
"z", 1 => "a"
"a B z", 4 => "e F d"
검색창에 abc 를 치고 자동완성으로 만들어진 알파벳모음을 가져와서 사용했다.
그러나 테스트가 통과하지 않아서,
혹시 빈 공백이 2개 이상인 경우 다 살려야 하는 건가 라는 의문을 가졌다.
입력받은 문자열을 split 메소드를 이용하여 배열로 만들고
각각의 문자열을 변경하고 join 으로 출력했다.
그러나 이 시도도 테스트가 통과하지 않았다.
프로그래머스 내 질문들이나, 다른 블로그글을 봤을 때
보통 아스키 코드를 이용해서 푸는 것 같았다.
아스키 코드를 활용해야만 풀 수 있는 건가 의문을 가졌다.
결국 문자열이나 아스키코드나 같은 거 아닌가 생각도 들었다.
String.fromCharCode(65) // A
어쨌든 내 코드들은 통과하지 않아서 처음으로 아스키 코드를 활용해서 풀었다.
결론은 이렇게 해서 테스트를 통과할 수 있었다.
오랜 시간이 걸린 후 해결한거라 뿌듯했지만 한편으로 찝찝했다.
내 첫 코드를 다시 검토했다.
그리고 나는 심각한 오류를 범했다는 것을 깨달았다.
자동완성으로 가져온 알파벳 순서가 잘못됐다.
abcdefghijklnmopqrstuvwxyz
m 과 n의 위치가 바뀌어져 있었다.
abcdefghijklmnopqrstuvwxyz 으로 사용해야 했다.
(이 부분을 바꾸고 테스트를 돌리니 깔끔하게 모두 통과했다.)
정말 당황스러웠다.
조금 더 편하게 사용하려다가 먼 길을 돌아왔다.
그러면서 느낀건 아 이래서 아스키코드를 사용하는구나 였다. ㅋㅋ
숫자대로 알파벳이 배정되어있어서 순서를 틀릴경우가 없다.
이번계기로 내가 안일하게 코드를 작성하는 경우를 잡아냈다.
또한 아스키코드를 직접 사용하면서 편리함을 깨달았다.
앞으로 자주 활용해야겠다.