둘만의 암호

박진은·2023년 3월 28일
0

코테

목록 보기
26/44

https://school.programmers.co.kr/learn/courses/30/lessons/155652

문제의 링크는 위와 같다.
내가 초기에 작성했던 코드는 인덱스가 전체배열의 *2 의 크기보다 클때를 간과해서 오류가 발생했다... 확실히 문제에 대한 정확한 이해가 필요하다.

5 ≤ s의 길이 ≤ 50
1 ≤ skip의 길이 ≤ 10
s와 skip은 알파벳 소문자로만 이루어져 있습니다.
skip에 포함되는 알파벳은 s에 포함되지 않습니다.
1 ≤ index ≤ 20

위가 문제에 대한 제한 사항이다.
여기서 주의 할점은 skip 의 길이는 10 보다 작고 index 의 길이는 20까지 가능하다는 점 그리고 알파벳은 26 까지 라는 점이다. 스킵을 최대 길이로 실행해도 알페벳 배열은 16까지가 가능한데 이 때 알파벳 베열을 한번 빼도 인덱스가 알파벳 배열 내부에 포함되지 않을 수가 있다. 즉 인덱스가 알파벳 배열의 마지막 수 (15라 가정) + index 가 20 이라면 35 가 되므로 16을 한번빼도 알파벳 인덱스 내부에 들어오지 않는 경우가 발생한다. 따라서 이를 없에기 위해서 while 문을 추가해서 무조건 알파벳 인덱스 내부로 들어오도록 만들었다.

def solution(s, skip, index):
    answer = ''

    alpa = [chr(97+i) for i in range(26)] # 알파벳 배열
    
    for i in skip:
        alpa.pop(alpa.index(i))
        
    l = len(alpa)
            
    for i in s:
        one_index = alpa.index(i) + index
        while one_index > l-1:
            one_index -= l
        answer = answer + alpa[one_index]
        
    return answer
profile
코딩

0개의 댓글