
문제
https://school.programmers.co.kr/learn/courses/30/lessons/155652
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
- 문자열 암호화 규칙
- 문자열 s의 각 알파벳을 index만큼 뒤로 밀어준다.
- z를 넘어가면 다시 a로 순환한다.
- 단, 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' |
'코딩 테스트 연습 > [프로그래머스] Python' 카테고리의 다른 글
| -- 9월 프로젝트 집중 기간 -- (0) | 2025.08.31 |
|---|---|
| [LV.4] 연습문제 > 대충 만든 자판 (4) | 2025.08.27 |
| [LV.4] 연습문제 > 문자열 나누기 (1) | 2025.08.22 |
| [LV.3] 탐욕법(Greedy) > 체육복 (0) | 2025.08.20 |
| [LV.3] 연습문제 > 숫자 짝꿍 ⭐️ (3) | 2025.08.18 |