프로그래머스: 둘만의 암호(Python3)

SIMPLY_DAILY·2025년 6월 9일

1. 문제

두 문자열 s와 skip, 그리고 자연수 index가 매개변수로 주어질 때, 아래 규칙에 따라 s를 변환한 결과를 return하도록 solution 함수 완성하기

1) 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줌
2) index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아감
3) skip에 있는 알파벳은 제외하고 건너뜀

2. 조건

  • 5 ≤ s의 길이 ≤ 50
  • 1 ≤ skip의 길이 ≤ 10
  • s와 skip은 알파벳 소문자로만 이루어져 있으며, skip에 포함되는 알파벳은 s에 포함되지 않는다.
  • 1 ≤ index ≤ 20

3. 작성 예시

예를 들어, s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않는다.
따라서, 'b', 'd'를 제외하고 'a'에서 5만큼 뒤에 있는 알파벳은 [c, e, f, g, h] 순서에 의해 'h'가 되고, 나머지 "ukks" 또한 위 규칙대로 바꾸면 "appy"가 되며 결과는 "happy"가 된다.

4. 코드 구현

✅ 작성 포인트

  • skip에 포함된 문자 제거하기
  • index만큼 이동한 위치를 계산할 때, 문자z를 넘으면 처음으로 돌아가도록 작성하기

1) 알파벳 문자열(alpha)을 나열한 후, skip에 포함된 문자를 제외한 문자열을 새로 정의한다. (중복 제거 & for반복문에서 알파벳 순서대로 순회할 수 있도록 오름차순 정렬 활용)
2) len_list에서 s의 각 문자가 현재 어느 위치에 있는지 확인하기 위해 idx를 정의한다.
3) len_list에서 index만큼 이동한 위치를 계산한다. (이때, z를 넘어갈 경우 다시 a로 돌아가도록 작성해야 함)
4) 새로 바뀔 문자를 result_list에 하나씩 추가한다.
5) result_list를 문자열로 바꾼 후, 결과값(answer)을 반환한다.

https://school.programmers.co.kr/learn/courses/30/lessons/155652

0개의 댓글