본문 바로가기
👩🏻‍💻 Front-end/👾 Algorithm

프로그래머스 - 숫자 문자열과 영단어 (Python)

by su-no 2022. 6. 6.

문제

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

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

 

풀이 1) list index를 이용

def solution(s):
    answer = s
    
    nums=['zero','one','two','three','four','five','six','seven','eight','nine']
    for num in nums:
        if num in answer:
            answer=answer.replace(num,str(nums.index(num)))
    
    return int(answer)

0부터 9까지 각각 인덱스에 해당하는 숫자의 알파벳으로 이루어진 리스트를 생성한다.

전달받은 문자열 중 알파벳 숫자가 포함되어 있다면, 해당 숫자(인덱스)로 치환한다.

문자열 answer를 int형으로 변환하여 return한다.

 

풀이 2) dict 자료형을 이용

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

0부터 9까지 알파벳:숫자 로 이루어진 dictionary를 생성한다.

전달받은 문자열 중 알파벳 숫자가 포함되어 있다면, 해당 알파벳(key)에 대응하는 숫자(value)로 치환한다.

문자열 answer를 int형으로 변환하여 return한다.