프로그래머스/Level_0

[프로그래머스] Lv.0 - 영어가 싫어요.py

ro-jun 2024. 10. 3. 00:26
728x90
반응형

문제

  • 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.

제한사항

  • numbers는 소문자로만 구성되어 있습니다.
  • numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
  • 1 ≤ numbers의 길이 ≤ 50
  • "zero"는 numbers의 맨 앞에 올 수 없습니다.

입출력 예시

  • 입출력 예 1
    • "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.
  • 입출력 예 2
    • "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.

코드 1

def solution(numbers):
    answer = ''
    numbers_list = {"zero":'0', "one":'1', "two":'2', "three":'3', "four":'4', "five":'5', "six":'6', "seven":'7', "eight":'8', "nine":'9'}
    temp_str = ''
    for ch in numbers:
        if temp_str in numbers_list:
            answer += numbers_list[temp_str]
            temp_str = ''
        temp_str += ch
    if temp_str in numbers_list:
        answer += numbers_list[temp_str]
        temp_str = ''
    return int(answer)

코드 2

def solution(numbers):
    answer = ''
    numbers_list = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    for idx, num_val in enumerate(numbers_list):
        numbers = numbers.replace(num_val, str(idx))
    answer = int(numbers)
    return answer

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

728x90
반응형