https://school.programmers.co.kr/learn/courses/30/lessons/155652
아래의 풀이로 했을때는 분명 주어진 예시 테스트는 통과했는데 나머지는 통과하지 못했다..
흠..틀린 이유가 무엇일지 고민해본다..흑흑 도저히 모르겠어서 다른 블로그 풀이를 참고했다.
#틀린 풀이
def solution(s, skip, index):
answer = []
for i in s:
temp=[]
cnt,alpha=0,0
for j in range(1,index+1):
temp.append(chr(ord(i)+j))
for t in temp:
if t in skip:
temp.remove(t)
cnt+=1
print(temp)
alpha=ord(i)+index+cnt
#print(alpha)
if alpha>122:
alpha-=26
answer.append(chr(alpha))
#print(answer)
return ''.join(answer)
핵심포인트
✅최대한 간단하게 풀어야 되는 것 같다. 위에처럼 복잡하게 풀면 안되는 문제다.
#옳은 풀이 1
def solution(s, skip, index):
answer = ""
alpha = "abcdefghijklmnopqrstuvwxyz" # 알파벳
for ch in skip: # ch => skip의 문자 하나하나
if ch in alpha:
alpha = alpha.replace(ch, "") # 알파벳 안에 skip 문자들 제거
for i in s:
change = alpha[(alpha.index(i) + index) % len(alpha)] # s의 문자 인덱스 + index를 alpha의 길이로 나눈 나머지를 알파벳으로 변환
answer += change
return answer
#옳은 풀이 2
def solution(s, skip, index):
answer = ''
character = []
# skip을 제외한 알파벳들 character에 대입
for i in range(ord('a'), ord('z') + 1):
if chr(i) in skip:
continue
character.append(chr(i))
# 해당 character + index를 answer에 넣어주기
for i in range(len(s)):
answer += character[(character.index(s[i]) + index) % (len(character))]
return answer
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[level 1] 덧칠하기 (0) | 2023.05.10 |
---|---|
[level 1] 카드 뭉치 (0) | 2023.05.10 |
[level 1] 개인정보 수집 유효기간 (0) | 2023.05.09 |
[level 1] 문자열 나누기 (0) | 2023.05.04 |
[level 1] 명예의 전당(1) (0) | 2023.05.04 |