프로그래머스의 숫자 문자열과 영단어 문제를 풀었다.
어렵지 않게 풀었지만 생각도 못한 간단한 풀이를 발견해서 다시 한 번 딕셔너리의 엄청남을 알게 됐다!!

number라는 리스트에 zero부터 nine까지 넣어주고 인덱스 번호랑 맞춰주는 게 나름 큰 그림이었다.
s 문자열 for문으로 돌면서 isdigit() 함수로 숫자면 바로 answer에 더해주고 문자면 새로운 변수인 alpha에 더해준다.
매번 alpha가 number의 원소 값 중 하나라면 그 인덱스를 찾아서 answer에 더해주고 alpha를 초기화해준다.
마지막에 리턴값이 int여야하므로 answer을 int로 타입 변환 시켜주면 끝이다.
def solution(s):
answer = ''
number = ['zero', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine']
alpha=''
for i in range(len(s)):
if s[i].isdigit() :
answer += s[i]
else:
alpha += s[i]
if alpha in number:
answer += str(number.index(alpha))
alpha = ''
return int(answer)
딕셔너리로 key, value 값을 만들어준 후, 0부터 9까지 돌면서 s 문자열에서 key(영단어) 값이 있으면 value(숫자)로 바꿔준다.
이 풀이를 보자마자 '어떻게 이런 직관적인 풀이가 가능하지?'라는 생각이 들었다.
num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
def solution(s):
answer = s
for key, value in num_dic.items():
answer = answer.replace(key, value)
return int(answer)