알고리즘

[프로그래머스, 파이썬] 둘만의 암호

hminor 2024. 2. 21. 11:33

풀이

  • ord()와 chr()를 활용해서 각 문자에 접근하여 
  • index만큼 카운팅하되 skip에 포함되는 문자의 경우엔
  • 카운팅하지 않도록 하기
  • 여기서 set()으로 한 이유는 hash로 접근하여 
  • 배열처럼 하나씩 접근하지 않기에 더 빠르다고 하여 이렇게 해결

 

def solution(s, skip, index):
    result = []
    s_skip = set(skip)
    for i in s:
        check = 0
        i_ord = ord(i)
        while check != index:
            n_i_ord = i_ord+1 if 122 >= i_ord+1 else 96+(i_ord+1)%122
            if chr(n_i_ord) not in s_skip: check += 1
            i_ord = n_i_ord
        result.append(chr(i_ord))
    return "".join(result)