https://school.programmers.co.kr/learn/courses/30/lessons/81301
접근 방법 : 문자열 처음부터 보면서, 만일 영단어라면 따로 모아둔 뒤에, dictionary로 관리되는 voc2num 정보 활용해서 대체 하면 될거라 생각함. O(N)이라 시간복잡도도 매우 넉넉하게 통과할것이라 예상
voc2num={
"zero":"0",
"one":"1",
"two":"2",
"three":"3",
"four":"4",
"five":"5",
"six":"6",
"seven":"7",
"eight":"8",
"nine":"9",
}
def solution(S):
result=""
idx=0
while idx<len(S):
if S[idx].isdigit():
result+=S[idx]
idx+=1
else: # 문자일 경우 숫자로 변환
voc=""
while voc not in voc2num:
voc+=S[idx]
idx+=1
# voc에는 현재 완성된 문자열이 있음 ex) "seven"
result+=voc2num[voc]
return int(result)
import re
def solution(S):
voc2num = {
"zero": "0", "one": "1", "two": "2", "three": "3", "four": "4",
"five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9"
}
# 숫자 영단어 패턴 생성
pattern = re.compile("|".join(voc2num.keys()))
# 매칭된 영단어를 숫자로 치환
converted = pattern.sub(lambda m: voc2num[m.group()], S)
return int(converted)
이거 쓰기 위해 필요한 것들
목적 : 영단어 → 숫자
dictionary의 함수
voc2num.keys()
voc2num.values()
voc2num.items()
정규표현식의 패턴 제작
one|two| … |nine 을 잡아야 하므로,
pattern=re.compile(”|”.join(voc2num.keys())