PS/프로그래머스

[Python] 둘만의 암호

s_omi 2024. 10. 29. 10:06

✏️ 문제

 

문제 파악

처음에 s의 각 문자들을 +1 하면서 skip에 있으면 skip에 없는 문자가 되도록 +1을 계속 더하는 코드를 for 반복문으로 했는데 

for 반복문으로 하면 skip에 있으면 +1을 한 번만 더한다는 문제가 있었다.

예를 들면 s = "a", skip = "bcd", index = 1 이라고 한다면

결과가 a가 bcd를 넘어 e가 되어야 하는데 처음 푼 코드는 c가 출력되었다.. 

 

그래서 for 반복문 대신에 while을 써서 문제점을 해결했고 

ord(해당 문자) + 1 > 122 이면 해당 문자 - 26을 해서 'a' 부터 시작하려고 했는데 이것도 좀 이상하게 출력되어서 

if ord(cur) + 1 > 122: 
    cur = 'a'

 

위의 코드처럼 그냥 'a'로 대입하는 게 결과가 잘 나왔다!

 

 

코드

def solution(s, skip, index):
    answer = ''
    
    for i in s:
        cur = i
        count = 0 
        
        while count < index:
            if ord(cur) + 1 > 122: 
                cur = 'a'
            else:
                cur = chr(ord(cur) + 1)

            if cur not in skip:
                count += 1

        answer += cur 

    return answer

 

'PS > 프로그래머스' 카테고리의 다른 글

[Python] 로또의 최고 순위와 최저 순위  (0) 2024.10.29
[Python] 문자열 나누기  (0) 2024.10.29
[Python] 대충 만든 자판  (0) 2024.10.29
[Python] 완주하지 못한 선수  (0) 2024.10.29
[Python] 실패율  (0) 2024.10.27