머신러닝 개발자의 러닝머신

[프로그래머스: 둘만의 암호(Python)] 본문

알고리즘/프로그래머스

[프로그래머스: 둘만의 암호(Python)]

oongsong 2023. 4. 23. 11:16
반응형

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/155652

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

접근 방법 

  • 알파벳 순서대로 특정 index칸만큼 뒤에 있는 알파벳으로 문자를 바꿔주어야 하므로 알파벳을 아스키(ASCII) 코드로 접근한다.
  • 알파벳 순서대로 index칸이 될때까지 하나씩 다음 알파벳을 살펴보며 skip에 존재하는 알파벳인 경우 continue, 그렇지 않은 경우는 cnt += 1 

 

알아두어야 하는 것 

  • chr(): 아스키코드 -> 문자 변환한다.
  • ord(): 문자-> 아스키코드 

 

코드 구현 

def solution(s, skip, index):
    answer = ''
    s_idx = ord('a')
    e_idx = ord('z')
    skip_lst = list(skip) #skip 문자열을 리스트로 변환한다
    
    for char in s: #각 문자를 index칸만큼 뒤에 있는 알파벳으로 변환 
        cnt = 0 
        cur = ord(char) #바꿔주어야 하는 현재 문자의 아스키 코드 
        while cnt<index: #cnt가 index가 될 때까지 다음 알파벳 살펴본다 
            nxt = cur +1 #다음 알파벳의 아스키 코드 
            if nxt>e_idx: #'z'를 넘어가는 경우는 다시 'a'로 시작 
                nxt = s_idx
            if chr(nxt) in skip_lst: #skip에 존재하는 문자면 continue 
                cur = nxt 
                continue
            cur = nxt #그렇지 않으면 cnt +1 
            cnt += 1
        
        answer += chr(nxt)
                 
    
    return answer
반응형