Lv0. 영어가 싫어요

zz·2023년 3월 30일
0

프로그래머스

목록 보기
19/36

[영어가 싫어요]

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

제한사항

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

입출력 예시

numbersresult
"onetwothreefourfivesixseveneightnine"123456789
"onefourzerosixseven"14067

문제 풀이

내 풀이

def solution(numbers):
    answer = numbers
    if ('one' in numbers):
        answer = answer.replace('one', '1')
    if ('two' in numbers):
        answer =answer.replace('two', '2')
    if ('three' in numbers):
        answer =answer.replace('three', '3')
    if ('four' in numbers):
        answer =answer.replace('four', '4')
    if ('five' in numbers):
        answer =answer.replace('five', '5')
    if ('six' in numbers):
        answer =answer.replace('six', '6')
    if ('seven' in numbers):
        answer =answer.replace('seven', '7')
    if ('eight' in numbers):
        answer =answer.replace('eight', '8')
    if ('nine' in numbers):
        answer = answer.replace('nine', '9')
    if ('zero' in numbers):
        answer =answer.replace('zero', '0')
    return int(answer)

비효율의 끝판왕.. 이렇게 한 이유는 enumerate 함수를 몰랐기 때문이다 dictionary를 가져와서 쓸까 잠시 고민했지만 dictionary를 잘 모르기 떄문에 벌어진 참사

다른 사람 풀이 1

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

조금은 효율이 나아진 풀이
Enumerate 함수를 쓰면 해당 리스트에서 element의 인덱스, 값 을 차례로 tuple로 return 한다. 이 예시에서는 리스트를 0부터 시작하게 했지만 만약 1부터 시작하게 하고 싶을 경우에는 start 옵션을 줄 수도 있다는게 장점이었다

다른 사람 풀이 2

ef solution(numbers):
    r = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4',
         'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}
    for k in r.keys():
        numbers = numbers.replace(k, r[k])
    return int(numbers)

dictionary를 이용해서 풀어낸 풀이. str(i)로 replace 한 것도 좀 똑똑하지 않았나 뭐 그런 생각
아직은 갈길이 멀다..!

profile
응애 나 애기개발자

0개의 댓글