프로그래머스 / 시저암호

flobeeee·2021년 6월 8일
0

코딩문제

목록 보기
2/6
post-thumbnail

⚡️ 문제

  • 문제링크 : 프로그래머스 1단계 시저암호

  • 설명 : 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식

  • 입출력 예시
    "AB", 1 => "BC"
    "z", 1 => "a"
    "a B z", 4 => "e F d"

⚡️ 1차시도 ( 실패 )

검색창에 abc 를 치고 자동완성으로 만들어진 알파벳모음을 가져와서 사용했다.

그러나 테스트가 통과하지 않아서,
혹시 빈 공백이 2개 이상인 경우 다 살려야 하는 건가 라는 의문을 가졌다.

⚡️ 2차시도 ( 실패 )

입력받은 문자열을 split 메소드를 이용하여 배열로 만들고
각각의 문자열을 변경하고 join 으로 출력했다.

그러나 이 시도도 테스트가 통과하지 않았다.

⚡️ 3차시도 ( 통과 )

프로그래머스 내 질문들이나, 다른 블로그글을 봤을 때
보통 아스키 코드를 이용해서 푸는 것 같았다.
아스키 코드를 활용해야만 풀 수 있는 건가 의문을 가졌다.
결국 문자열이나 아스키코드나 같은 거 아닌가 생각도 들었다.

String.fromCharCode(65) // A
어쨌든 내 코드들은 통과하지 않아서 처음으로 아스키 코드를 활용해서 풀었다.
결론은 이렇게 해서 테스트를 통과할 수 있었다.
오랜 시간이 걸린 후 해결한거라 뿌듯했지만 한편으로 찝찝했다.

⚡️ 실패한 이유

내 첫 코드를 다시 검토했다.
그리고 나는 심각한 오류를 범했다는 것을 깨달았다.
자동완성으로 가져온 알파벳 순서가 잘못됐다.

abcdefghijklnmopqrstuvwxyz
m 과 n의 위치가 바뀌어져 있었다.
abcdefghijklmnopqrstuvwxyz 으로 사용해야 했다.
(이 부분을 바꾸고 테스트를 돌리니 깔끔하게 모두 통과했다.)

정말 당황스러웠다.
조금 더 편하게 사용하려다가 먼 길을 돌아왔다.
그러면서 느낀건 아 이래서 아스키코드를 사용하는구나 였다. ㅋㅋ
숫자대로 알파벳이 배정되어있어서 순서를 틀릴경우가 없다.

이번계기로 내가 안일하게 코드를 작성하는 경우를 잡아냈다.
또한 아스키코드를 직접 사용하면서 편리함을 깨달았다.
앞으로 자주 활용해야겠다.

profile
기록하는 백엔드 개발자

0개의 댓글

관련 채용 정보