반응형
https://school.programmers.co.kr/learn/courses/30/lessons/155652
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(s, skip, index):
alphabet = [chr(i) for i in range(ord('a'), ord('z')+1) if chr(i) not in skip]
alphabet_to_index = {}
index_to_alphabet = {}
for i, c in enumerate(alphabet):
alphabet_to_index[c] = i
index_to_alphabet[i] = c
result = ''
for c in list(s):
i = (alphabet_to_index[c] + index) % len(alphabet)
result += index_to_alphabet[i]
return result
먼저 list comprehension
과 조건문
을 활용하여 skip
에 존재하지 않은 알파벳만 구하여 alphabet
리스트로 만들었습니다.
그리고 enumerate()
함수를 사용하여 인덱스 i
와 c
를 alphabet
리스트에서 순차적으로 추출합니다.alphabet_to_index
, index_to_alphabet
딕셔너리에는 다음과 같은 형태로 저장됩니다.
- alphabet_to_index : {알파벳 : 인덱스}
- index_to_alphabet : {인덱스 : 알파벳}
s
를 반복하면서 i
를 구합니다.
i
는alphbet_to_index
에서c
에 해당하는 인덱스에index
변수를 더하고len(alphabet)
으로 나눈 나머지입니다.i
는index
만큼의 뒤의 알파벳이z
를 넘어갈 경우 다시a
로 돌아갈 수 있게 해줍니다.
위에서 구한 i
를 index_to_alphabet
에서 추출하여 result
변수에 저장합니다.
반복문을 종료한후에 result
변수를 반환합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 대여기록이 존재하는 자동차 리스트 구하기 MySQL (0) | 2023.02.13 |
---|---|
[코딩테스트] 프로그래머스 자동차 평균 대여 기간 구하기 MySQL (0) | 2023.02.12 |
[코딩테스트] 프로그래머스 2 x n 타일링 파이썬(Python) (0) | 2023.02.09 |
[코딩테스트] 프로그래머스 베스트앨범 파이썬(Python) (0) | 2023.02.08 |
[코딩테스트] 프로그래머스 뒤에 있는 큰 수 찾기 파이썬(Python) (0) | 2023.02.07 |