728x90
반응형
숫자문자열과 영단어 (프로그래머스 Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/81301
내 코드
def solution(s):
answer = ''
alpha = ['zero','one','two','three','four','five','six','seven','eight','nine']
i = 0
while(i<len(s)):
if list(s)[i].isalpha() == False:
answer += str(list(s)[i])
i += 1
else:
for j, alp in enumerate(alpha):
if list(alp)[0] == list(s)[i] and list(alp)[1] == list(s)[i+1]:
answer += str(j)
i += len(alp)
break
answer = int(answer)
return answer
마지막 for 문에 break를 안써서 자꾸 nine까지 넘어가는 바람에 계속 리스트를 넘어섰다는 오류(IndexError: list index out of range)가 계속 떠서 애를 먹었다. 찾는 조건을 만족하면 break를 쓰는 습관을 들여야 겠다.
[베스트 코드 리뷰]
나는 첫째 자리와 둘째 자리를 모두 비교해보는 방법을 썼지만, replace함수를 이용하는 방법도 있었다.
def solution(s):
words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
for i in range(len(words)):
s = s.replace(words[i], str(i))
return int(s)
혹은 동일하게 replace함수를 이용하나 딕셔너리를 같이 이용하는 방법이 있다.
def solution(s):
num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
answer = s
for key, value in num_dic.items():
answer = answer.replace(key, value)
return int(answer)
728x90
반응형
'Python공부 > 프로그래머스' 카테고리의 다른 글
(Python) 완주하지 못한 선수 (프로그래머스 Lv.1)/value값으로 key가져오기 (0) | 2023.06.16 |
---|---|
(Python) K번째수 (프로그래머스 Lv.1)/한줄코딩 (0) | 2023.06.16 |
(Python) 비밀지도 (프로그래머스 Lv.1)/.zfill() (0) | 2023.06.16 |
(Python) 덧칠하기 (프로그래머스 Lv.1) (0) | 2023.06.16 |
(Python) 체육복(프로그래머스Lv.1) (0) | 2023.06.15 |