프로그래머스_Lv0_영어가 싫어요_파이썬

Today Jeeho Learned·2022년 12월 21일
0

알고리즘

목록 보기
35/38
post-thumbnail

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120894

내 답안

def solution(numbers):
    nums = [
        "zero",
        "one",
        "two",
        "three",
        "four",
        "five",
        "six",
        "seven",
        "eight",
        "nine"
    ]


    for i, num in enumerate(nums):
        numbers = numbers.replace(num,str(i))

    return int(numbers)

풀이 정리

  • dict를 활용해서 dict = { "zero" : 0, ~~~} 식으로 넣어주고 값을 하나씩 key값과 같은 경우 value값을 넣어주면서 문자를 해석하려고 했다.
  • 그런데 dict의 순서대로 값이 들어가기때문에 numbers가 순서대로 주어지지 않는 경우에는 제대로 값이 제대로 들어가지 않았다.
  • 그래서 이방법을 포기하고 enumerate를 배웠고 공부하면서 새롭게 적용해보았다.

https://www.daleseo.com/python-enumerate/

종종 enumerate를 사용하는 경우를 보았는데 정리하자면 배열에서 index값과 그에 해당하는 값을 함께 사용할 수 있는 함수였다! dict와 약간 비슷한 성질을 가지면서도 사용하기 더 편한 구조이다.!

  • 그리하여 새로운 함수에 nums = ["zero","one","two","three", ~~~] 값을 넣어주었고, 다행히도 zero값이 있어서 index에도 별다른 조치없이 접근할 경우 딱 알맞게 떨어졌다.
  • 여기서는 replace함수를 통해서 기존의 배열에서 nums의 값에따라서 인덱스의 값으로 넣어주었다.
  • 마지막에는 str형이 아닌 int형으로 형변환하여 answer을 return해주었다.

다른풀이

def 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)

  • 이렇게 풀고 싶었는데 replace를 생각하지 못해서 자꾸 실패했었다.
  • replace 기억하자!!
profile
기록해야 (살아)남는다 !

0개의 댓글