728x90
반응형
💬 내가 작성한 python 코드 (잘못된 코드 = 78.9/100) → 테스트 케이스가 많이 맞지 않음
def solution(s, skip, index):
answer = ''
for i in s: # str에서 한글자씩 i가 됨
new_list = []; cnt = 0; alpha = 1
while len(new_list) < index:
if ord('z') < ord(i)+alpha: # z 넘어가면 다시 a로 돌아오기
if chr(ord(i)-26+alpha) in skip: # skip 제외하기
cnt += 1
alpha += 1
else:
new_list.append(chr(ord(i)-26+alpha))
alpha += 1
else:
if chr(ord(i)+alpha) in skip: # skip 제외하기
cnt += 1
alpha += 1
else:
new_list.append(chr(ord(i)+alpha))
alpha += 1
answer += new_list[-1]
return answer
💬 다시 작성한 python 코드
def solution(s, skip, index):
alpha = "abcdefghijklmnopqrstuvwxyz"
answer = ""
for i in list(skip):
alpha = alpha.replace(i,"")
for a in s: # index만큼 뒤로 미루고, alpha 길이를 벗어나면(z)면 a로 돌아가게끔 % 처리
answer += alpha[(alpha.find(a) + index) % len(alpha)]
return answer
💬 다른 사람이 작성한 코드
from string import ascii_lowercase
def solution(s, skip, index):
result = ''
a_to_z = set(ascii_lowercase) # set으로 만들고
a_to_z -= set(skip) # skip 삭제
a_to_z = sorted(a_to_z)
l = len(a_to_z)
dic_alpha = {alpha:idx for idx, alpha in enumerate(a_to_z)}
for i in s:
result += a_to_z[(dic_alpha[i] + index) % l]
return result
나는 아스키 코드로 처리해보려고 했으나,
string을 만들어서 처리하면 더 빠르고 정확한 처리가 가능하다는 것을 배웠다.
또, set에서는 -=로 원소 삭제가 가능하다는 것도 처음 알았다.
나도 코딩 머신 되고싶다 ... ~~~
728x90
'자료구조 및 알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 조건에 맞는 도서 리스트 출력하기 (SQL) (0) | 2024.04.15 |
---|---|
프로그래머스 - 이진 변환 반복하기 (파이썬) (0) | 2024.04.12 |
프로그래머스 - 두 개 뽑아서 더하기 (파이썬) (0) | 2024.04.11 |
프로그래머스 - 수박수박수박수박수박수? (파이썬) (0) | 2024.04.08 |
프로그래머스 - 로또의 최고 순위와 최저 순위 (파이썬) (0) | 2024.04.08 |