프로그래머스 - 숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십)
문제 링크
문자열이 들어오는 경우 경계를 설정해야 한다. 이 때, 적절한 시점에 잘라주는게 중요한데 그 방법으로 1. 임시 저장소와 2. 키 일치 를 생각했다. 1은 빈 문자열에 넣고 비워주는 방법을 선택했고, 2는 해시 구조의 딕셔너리를 선택하였다.
tmp = ''
tmp += char
if tmp in dict:
answer += dict[tmp]
tmp = ''
tmp에 들어오는 글자를 붙여주며 tmp가 딕셔너리의 키로 존재하는 경우에는 답에 붙여주고 tmp를 빈 문자열로 초기화한다.
(글을 쓰다가 떠올랐는데, 이러한 방법은 'onehundred'와 같은 경우를 'one'으로 취급하기 때문에 예외가 발생할 수 있다. 다만 이 문제의 경우 해당 경우가 없기 때문에 우선은 가능해 보인다.😓)
dict = {}
dict['zero'] = '0'
...(중간생략)
dict['nine'] = '9'
def solution(s):
answer = ''
tmp = ''
for char in s:
if char.isdigit():
answer += char
else:
tmp += char
if tmp in dict:
answer += dict[tmp]
tmp = ''
return int(answer)