from collections import deque
def solution(s):
answer = ''
number = {'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four': '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9'}
queue = deque(list(map(str, s)))
while queue :
q = queue.popleft()
if q.isdigit() :
answer += q
continue
while q not in number :
q += queue.popleft()
answer += number[q]
return int(answer)
영단어를 key, 숫자 문자열을 value로 한 딕셔너리를 만들었다.
큐를 이용해서 앞에서 부터 한 문자씩 받은 후, 해당 문자가 숫자인지 아닌지 여부를 확인했다.
숫자일 경우 바로 answer에 붙이고, 아닐 경우 반복해서 문자를 출력한 후 문자열이 딕셔너리 number에 있는지 확인한 후, answer에 붙였다.
문제를 다 풀고 다른 분들의 코드를 보니 와 replace
를 생각하지 못해서 !!!!
너무 아쉬웠다.
replace를 이용해서 아래와 같이 풀 수 있다.
def solution(s):
number = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
for i, n in enumerate(number) :
s = s.replace(n, str(i))
return int(s)
isdigit()
replace()