코딩 테스트 연습/[프로그래머스] Python

[LV.4] 연습문제 > 둘만의 암호

duswjd_data 2025. 10. 15. 22:29

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

  • 문자열 암호화 규칙
  1. 문자열 s의 각 알파벳을 index만큼 뒤로 밀어준다.
  2. z를 넘어가면 다시 a로 순환한다.
  3. 단, skip에 포함된 알파벳은 건너뛴다. (즉, 밀 때 세지 않는다)

예시

s = "aukks"
skip = "wbqd"
index = 5
→ "happy"

참고

  • import string
    • 파이썬 내장 모듈 string을 불러오는 코드로, 문자열 처리에 자주 쓰이는 상수들을 제공
    • 'abcdefghijklmnopqrstuvwxyz' → string.ascii_lowercase 
      (a부터 z까지 알파벳을 자동으로 불러옴)
    • 이를 이용해 skip에 포함되지 않은 알파벳만 걸러낼 수 있음

정답 코드

def solution(s, skip, index):
    import string
    
    # 사용할 수 있는 알파벳 (skip 제외)
    alpabets = [c for c in string.ascii_lowercase if c not in skip]

    answer = ''
    for c in s:
        # 현재 문자의 위치
        pos = alpabets.index(c)
         # index만큼 이동 (순환)
        char = alpabets[(pos+index)%len(alpabets)]
        answer += char
    
    return answer

동작 원리

단계 설명 예시
1 알파벳에서 skip 제외 'a'~'z' 중 w,b,q,d 제거
2 문자 a 찾기 인덱스 0
3 index(5)만큼 이동 (0 + 5) % len(alpabets) → 'h'
4 모든 문자 반복 'aukks' → 'happy'