code/[프로그래머스] python
[코딩 테스트 연습 입문] 영어가 싫어요
오리는짹짹
2022. 12. 27. 15:47
문제
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
✔풀이
def solution(numbers):
answer = ''
real_answer=''
num_dict={"zero":0, "one":1, "two":2, "three":3, "four":4, "five":5, "six":6, "seven":7, "eight":8, "nine":9}
numbers=list(numbers)
for alphabet in numbers:
answer+=alphabet
if answer in num_dict.keys():
for key,value in num_dict.items():
if key==answer:
real_answer+=str(value)
answer=''
return int(real_answer)
📝설명
numbers를 for문으로 반복하면서 뽑아내는 알파벳을 빈 문자열 answer에 옮기는 걸 반복하고, 이 빈 문자열에서 딕셔너리(영단어가 key, 숫자가 value)의 key와 같다면 return할 문자열 real_answer에 value값을 집어넣고, answer은 다시 빈 문자열로 만드는 것으로 코드를 짰다.
👑모범 답안
🔎enumerate()에 대해서 분명하게 알아야 이해를 할 수 있다.
enumerate()는 구성요소와 구성요소의 인덱스를 함께 묶는다.
이 코드에서는 0,zero가 묶이고, 1,one이 묶인다고 보면 된다!
.replace()는 바꾸려는 위치의 값, 바꿀려고 하는 값을 괄호 안에 넣어야 한다.
따라서 numbers.replace(eng, str(num))을 해서 영어와 숫자를 바꾼다.
👀느낀 점
: 저번 문제 풀이를 할 때 enumerate를 가지고 있는 다른 사람의 풀이가 있었는데, 자세히 공부하지 않았었다.
그 때 제대로 봤다면 이번에 떠올리기라도 하지 않았을까..라는 아쉬움이 있었다.
이런 아쉬움을 앞으로는 덜 느끼도록, 제대로 공부하면서 문제를 넘겨야겠다.