반응형
먼저, 이 문제를 봤을 때 "일단 모든 알파벳을 리스트에 넣고, skip에 있는 알파벳을 제거하자" 라는 생각이 딱 들었다.
그리곤 인덱스를 잘 이용하면 되겠다는 생각이 들었다.
>> 아마도 이건 여러 문자열 문제를 풀면서 체득한..
그래서
s = "aukks"
skip = "wbqd"
index = 5
alpha = [chr(i) for i in range(97, 123)]
alpha = sorted(list(set(alpha) ^ set(list(skip))))
다음과 같이 26개의 알파벳에서 skip에 포함된 4개 문자를 제거한 22개의 알파벳 리스트를 만들었다.
['a', 'c', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z']
이제 간단하게 각 문자의 인덱스에서 5를 더하면
a : 0 + 5 = 5 % 22 = 5 => h
u : 17 + 5 = 22 % 22 = 0 => a
k : 8 + 5 = 13 % 22 = 13 => p
k : 8 + 5 = 13 % 22 = 13 => p
s : 15 + 5 = 20 % 22 = 20 => y
따라서, s 변수의 각 문자에 대해 alpha 리스트에 해당하는 idx를 구하고, idx에 입력 index를 더하면 된다.
단, idx + index가 alpha의 범위를 넘어가면 다시 첫 번째 idx로 돌아가기 때문에 모듈러(%) 연산을 이용해서
알맞는 idx를 구할 수 있다.
# 정답 코드
def solution(s, skip, index):
answer = ''
alpha = [chr(i) for i in range(97, 123)]
alpha = sorted(list(set(alpha) ^ set(list(skip))))
for _s in list(s):
idx = alpha.index(_s) + index
answer += alpha[idx % len(alpha)]
return answer
# 소요시간
반응형
댓글