[프로그래머스] Lv1 - 둘만의 암호

김멉덥·2023년 8월 5일
0

알고리즘 공부

목록 보기
74/171
post-thumbnail
post-custom-banner

문제

프로그래머스 연습문제


코드 구현

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

    alphabet = 'abcdefghijklmnopqrstuvwxyz'

    for i in skip:
        alphabet = alphabet.replace(i, "")      # skip에 포함되어 있는 글자는 지워버리기
    for i in s:
        char = alphabet.index(i) + index        # index만큼 뒤의 알파벳 구하기
        if(char >= len(alphabet)):              # 만약 z를 넘어간다면
            char = char % len(alphabet)         # a부터 다시 시작
        answer += alphabet[char]

    return answer

풀이

  • 처음에는 ord(), chr() 로 풀었는데 제출을 해도해도 계속 테스트케이스에서 실패가 나길래 결국 방법을 바꾸어 풀었다.
  • string.replace() 를 이용하여 skip에 있는 글자는 다 지워버리고 → 찾아야 하는 글자 찾기
    • replace를 쓸 때에는 꼭 변수에 할당해주기 ! ! ! (이거 때문에 또 10분정도 날려먹은듯)
    alphabet = alphabet.replace(i, "") 

What I learned

감탄한 다른 사람 코드… 와
ascii_lowercase 이란게 있는지 처음 알았다

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
profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

0개의 댓글