[프로그래머스] LEVEL0 영어가 싫어요 파이썬

그린·2023년 2월 14일
0

프로그래머스

목록 보기
2/28
post-thumbnail

[프로그래머스] LEVEL0 영어가 싫어요


✔️문제

✅문제 설명

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

✅제한사항

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


✔️풀이

🙋‍♀️내 풀이

def solution(numbers):
    dic = {"zero" : "0", "one" : "1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven" : "7", "eight" : "8", "nine" : "9"}
    for k,v in dic.items() :
        if k in numbers:
            numbers = numbers.replace(k, v)
    return int(numbers)

영단어 : 숫자의 딕셔너리를 만들어 key값에 해당하는 문자를 만나면 key에 해당하는 value로 대체하는 코드를 짰다


🤔다른 사람의 풀이

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)

굳이 딕셔너리로 만들지 않고 index를 이용하여 훨씬 더 간결하게 코드를 짤 수 있다.


👍오늘의 배운 점

💡enumerate() 함수

enumerate는 “열거하다”라는 뜻으로 enumerate() 함수는 기본적으로 인덱스와 원소로 이루어진 튜플(tuple)을 만들어준다. 리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능을 가진다.

이 함수는 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴한다.

data = enumerate((1, 2, 3))

for i, value in data:
    print(i, ":", value)
print()

0 : 1
1 : 2
2 : 3

0개의 댓글