링크
내 풀이(O)
- skip에 포함되는 문자를 제외한 알파뱃 리스트를 만든다
- 알파뱃 리스트에서 각 문자의 인덱스를 구하고 건너뛸 수를 더한다
- 새로운 인덱스가 알파뱃 리스트의 길이를 넘어서지 않도록 조정한다
- 새로운 인덱스로 구한 문자들을 반환한다
from string import ascii_lowercase
def solution(s, skip, index):
answer = ''
alph_list = list(char for char in ascii_lowercase if char not in skip)
for char in list(s):
new_idx = alph_list.index(char) + index
while (new_idx >= len(alph_list)):
new_idx -= len(alph_list)
answer += alph_list[new_idx]
return answer
다른 풀이
- 알파뱃 리스트의 길이로 나눈 나머지 값을 인덱스로 사용
from string import ascii_lowercase
def solution(s, skip, index):
result = ''
a_to_z = set(ascii_lowercase)
a_to_z -= set(skip)
a_to_z = sorted(a_to_z)
l = len(a_to_z)
dic_alpha = {alpha:idx for idx, alpha in enumerate(a_to_z)}
for i in s:
result += a_to_z[(dic_alpha[i] + index) % l]
return result
검증용 코드
ss = ["aukks"]
skips = ["wbqd"]
indexs = [5]
results = ["happy"]
for idx in range(len(results)):
print(idx, '성공' if solution(ss[idx], skips[idx], indexs[idx]) == results[idx] else "실패")