코딩익힘책 #2 숫자 문자열과 영단어

나의 코드

def solution(s):
    dic1 = {
        0:'zero',
        1:'one',
        2:'two',
        3:'three',
        4:'four',
        5:'five',
        6:'six',
        7:'seven',
        8:'eight',
        9:'nine'
    }
    dic2 = ['0','1','2','3','4','5','6','7','8','9']
    
    answer = ''
    char_num = ''
    count = 0
    
    for char in s:
        if char.isalpha():
            char_num += char
            count += 1
            for i in range(10):
                if char_num == dic1[i]:
                    answer += dic2[i]
                    count = 0
                    char_num = ''
        else:
            answer += char

    
    return int(answer)

베스트 코드


def solution(s):
    num_dic = {
    	"zero":"0",
    	"one":"1",
    	"two":"2",
    	"three":"3",
    	"four":"4",
    	"five":"5",
    	"six":"6",
    	"seven":"7",
    	"eight":"8",
    	"nine":"9"
    }
    
    answer = s
    
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
        
    return int(answer)

느낀 점

단어로 된 숫자를 아라비아 숫자로 변환시키는 문제였다.
배열을 확인하며 숫자가 아닐 경우 해당 알파벳을 스트링 변수에 하나하나 담는다.
그 이후 숫자를 만날 경우 현재까지 쌓인 알파벳들을 딕셔너리 키값으로 사용하여 아라비아 숫자를 얻고 현재 알파벳이 아닌 숫자를 추가로 담아 최종 답을 구현한다.
이에 반복문을 자주 사용하여 굉장히 구리다는 것을 느꼈다.
베스트 코드의 경우 아주 파이썬처럼 코드를 구성했다.
반복문을 통해 key값과 value값을 하나씩 뽑아서 key인 단어에 해당하는 부분을 value로 교체했다.
내장함수들의 종류가 어떤 것이 있는지 공부해야겠다.

좋은 웹페이지 즐겨찾기