알고리즘 문제풀이
https://school.programmers.co.kr/learn/courses/30/lessons/155652
def solution(s, skip, index):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
answer = ''
알파벳을 스트링 형태로 alphabet 변수에 저장.
def solution(s, skip, index):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
answer = ''
for j in skip:
if j in alphabet:
alphabet = alphabet.replace(j,'')
제외해야 할 skip의 알파벳들을 하나씩 뽑아서 alphabet에서 없애주기.
skip의 j는 alphabet에 반드시 있을테니 그 값들을 ''을 통해 없앴다.
...
alphabet = alphabet.replace(j,'')
for i in s:
n = alphabet[(alphabet.index(i) + index)]
문자열 s를 for문으로 하나씩 뽑아온다.
skip의 j들을 제거한 alphabet에서, s에서 뽑아온 각 i의 위치(숫자)에 index값을 더하여 나온 int값을 구한다.
이 값은 숫자이고 대괄호를 만나 alphabet[int] 즉, alphabet(j가 제거된)의 int번째 알파벳을 나타낸다.
이 때, int가 j가 제거된 alphabet의 길이보다 크다면 큰 만큼! 다시 a부터 돌아와서 순서를 찾아가야 한다.
ex)
j가 제거된 alphabet이 "abc···yz"이면서 길이가 15일 때, alphabet[(alphabet.index(i) + index) == alphabet(18) 이면,
15번째인 z를 지나 다시 a(16번째)와b(17번째)를 건너 c(18번째)를 출력.
...
answer = ''
...
for i in s:
n = alphabet[(alphabet.index(i) + index)%len(alphabet)]
answer += n
return answer
%는 나머지만! 출력하는 연산자다!!
len을 이용해 j를 제거한 alphabet의 길이를 구하고,
그 길이로 (alphabet.index(i) + index)를 나눴을 때 나머지 값을
alphabet[여기] 에 넣는 코드를 짜서 순서를 맞춰주었다.
def solution(s, skip, index):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
answer = ''
for j in skip:
if j in alphabet:
alphabet = alphabet.replace(j,'')
for i in s:
# alphabet[alphabet.index(i)] = i
n = alphabet[(alphabet.index(i) + index)%len(alphabet)]
answer += n
return answer
index()는 하나 하나의 값의 위치를 뜻함 (몰랐음..)
alphabet[alphabet.index(i)] = i (이걸 이해하기 어려웠다)
팀원분이 설명해주셔도 어려웠던 부분이 있어서 스스로 답답했다..
시간이 걸릴 것 같은 부분은 따로 표시해두고 혼자 고민해보면서 포기하지 않았다.
계속 가보자고!!