숫자 문자열과 영단어

이기현·2021년 9월 15일

코딩테스트 준비

목록 보기
16/20

첫번째 해답 :

def solution(s):
    answer = ''
    print(len(s))
    i = 0
    while i < len(s) :
        if s[i].isdigit() :
            answer += s[i]
            i += 1
        else :
            if s[i:i+2] == 'ze' : answer += '0'; i += 4
            if s[i:i+2] == 'on' : answer += '1'; i += 3
            if s[i:i+2] == 'tw' : answer += '2'; i += 3
            if s[i:i+2] == 'th' : answer += '3'; i += 5
            if s[i:i+2] == 'fo' : answer += '4'; i += 4
            if s[i:i+2] == 'fi' : answer += '5'; i += 4
            if s[i:i+2] == 'si' : answer += '6'; i += 3
            if s[i:i+2] == 'se' : answer += '7'; i += 5
            if s[i:i+2] == 'ei' : answer += '8'; i += 5
            if s[i:i+2] == 'ni' : answer += '9'; i += 4

    return int(answer)

개선한 정답 :

def solution(s):
    answer = ''
    num_s = {'zero':0, 'one':1, 'two':2, 'three':3, 'four':4, 'five':5, 'six':6, 'seven':7, 'eight':8, 'nine':9} 
    
    for idx, key in enumerate(num_s) :
        s = s.replace(key,str(num_s[key]))
         
    return int(s)

배운 점 :
replace를 하면 해당 string 안에있는 특정 단어를 다른 단어로 치환할 수 있다.
dictionary 형은 json 처럼 key : value 값을 가지고 있는 자료형태이다.
enumerate는 리스트가 있는 경우 순서와 리스트의 값을 전달한다.

profile
실력을 쌓아가는 하루하루

0개의 댓글