관리자 글쓰기

 

 

문제

 

위의 표처럼 매개변수(S)로 숫자와 영단어가 혼합된 문장이 주어지면

모두 숫자로 변환해서 리턴하는 문제다.

 

 

풀이

 

word_to_num = {
     "zero": "0",
     "one": "1",
     "two": "2",
     "three": "3",
     "four": "4",
     "five": "5",
     "six": "6",
     "seven": "7",
     "eight": "8",
     "nine": "9"
}

def solution(s):
    res = ""
    word = ""
    for char in s:
        word += char
        if word.isdigit():
            res += word
            word = ""
        elif word in word_to_num.keys():
            res += word_to_num[word]
            word = ""
            
    return int(res)

 

1. 영단어를 숫자로 변환해 줄 딕셔너리를 만든다.

 

2. 문자열을 반복문에 넣어서 한 글자씩 word(빈 문자열)에 더한다.

 

3. 만약 word가 숫자면 res(결과)에 word를 더한다.

   그리고 word를 초기화한다.

   .isdigit()  메서드는 숫자가 문자열로 표현되어있으면 True를 반환한다.

   ex) '1'.isdigit() == True 

        'a'.isdigit() == False

        '1a'.isdigit() == True

 

4. 만약(elif) word가 딕셔너리의 key값 중에 있으면 그 key의 value를 res에 더한다.

   그리고 word를 초기화한다.

 

5. 위의 두 개의 조건문에 해당하지 않으면 word는 그대로 놔둔다.