✏️ 문제
문제 파악
처음에 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 |