문제풀이/프로그래머스

둘만의 암호(프로그래머스) 문제풀이

soo-dal 2024. 3. 5. 19:55

문제 

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

 

프로그래머스

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

programmers.co.kr

 

 

문제 접근 방식

주어진 문자열의 각 철자를 Index 번째 뒤의 알파펫으로 변경하는 문제이다. 이때, skip 에 해당하는 철자는 건너뛴다. 주어진 조건에 맞는 문자열을 변환시키는 구현 문제이며, 아래와 같은 로직으로 구현을 진행했다.

 

처리과정

1. 모든 알파벳에 대해 순서 번호를 매겨준다. ex) {'a':0, 'b':1 ,... z:'25'}
2. skip 에 포함되는 철자들을 set 자료형으로 관리한다
3. 문자열의 각 철자를 순회하며, index 뒤에 있는 철자를 구한다.
    3.1. 만약 'z'를 넘어간다면 'a'로 돌아가준다
    3.2. 만약 skip에 포함된다면 건너뛴다

 

 

코드


def solution(s, skip, index):
    alphabets=['a','b','c','d','e','f','g','h','i',
               'j','k','l','m','n','o','p','q','r',
              's','t','u','v','w','x','y','z']
    alphabets_dict=dict()
    
    # 각 알파벳들의 순서를 보관한다
    for i,ele in enumerate(alphabets):
        alphabets_dict[ele]=i
        
    skip=set(list(skip)) # skip을 set 자료구조로 관리한다.
    answer = ''
    
    for char in s:
        i=alphabets_dict[char]
        count=0
        while count<index:
            i+=1
            if i==26:
                i=0
            if alphabets[i] in skip:
                continue
            count+=1
        answer+=alphabets[i]
#     
    return answer