ref: https://programmers.co.kr/learn/courses/30/lessons/81301
일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임
일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수
s가 의미하는 원래 숫자를 return
1 ≤ s의 길이 ≤ 50
"zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
문자열 다루는 문제, 해시테이블 관련 문제
s의 길이가 50밖에 되지 않기 때문에,
1초에 2000만번 연산을 하는 파이썬에겐 충분하다.
def solution(s):
alpha =['zero','one','two','three','four','five','six','seven','eight','nine']
alpha_dic = {}
for i in range(len(alpha)):
alpha_dic[alpha[i]] = str(i)
answer = ''
tmp = ''
for i in s:
if i.isdigit():
answer += i
continue
tmp += i
if tmp in alpha_dic:
answer += alpha_dic[tmp]
tmp = ''
return int(answer)
// function solution(s) {
// const digitAlpha = ['zero','one','two','three','four','five','six','seven','eight','nine'];
// const digitMap = new Map();
// for(let i=0; i<digitAlpha.length; i++){
// digitMap.set(digitAlpha[i],i)
// }
// let answer = '';
// let tmp = '';
// for(let i=0; i<s.length; i++){
// if(Number(s[i])){
// answer += s[i];
// } else{
// tmp += s[i];
// };
// if (digitMap.has(tmp)){
// answer += digitMap.get(tmp);
// tmp = '';
// }
// }
// return parseInt(answer);
// }
Map 자료형 사용하지 않고, Array indexing으로 풀 수 있지만,
연습을 위해, Map 자료형 사용.