문제풀이/프로그래머스
둘만의 암호(프로그래머스) 문제풀이
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