본문 바로가기

알고리즘 삽질장

[프로그래머스] 숫자 문자열과 영단어

반응형


문제설명

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

사고과정

  • 우선은 숫자를 알파벳로 나타낸 문자와 그에 매핑되는 숫자를 딕셔너리로 만들었다.
  • 그리고 주어지는 문자와 숫자가 합해진 문자열 하나하나씩 도는데, 숫자이면 바로 결과값에 append 시켰다.
  • 만약 알파벳인 경우에는 알파벳 하나하나 받을 때마다 딕셔너리의 key에 있는 값들 중에 존재하는지 확인하면서 숫자를 알파벳으로 나타낸 문자가 완성되는 순간 바로 결과값에 append 하는 식으로 구현했다.
  • 처음에 당황하긴 했지만 잘 구현함!

풀이

def solution(s):
    keys = ['zero', 'one', 'two', 'three', 'four', 'five', 'six',
           'seven', 'eight', 'nine']
    values = [str(x) for x in range(10)]
    maps = dict(zip(keys, values))
    
    result = []
    string = ''
    for x in s:
        if x.isdigit():
            result.append(x)
        elif x.isalpha():
            string += x
            if string in keys:
                result.append(maps[string])
                string = ''
    return int(''.join(result))
반응형