https://school.programmers.co.kr/learn/courses/30/lessons/120894
[문제 설명]
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
[나의 풀이]
def solution(numbers):
num={'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5',
'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
for key, value in num.items():
numbers = numbers.replace(key,value)
return int(numbers)
⭐replace함수
주의 사항: replace 메서드는 두 번째 인자로 문자열만을 받기 때문에, value는 문자열이어야 함.
처음에 num={'zero':0, 'one':1..} 이렇게 적었는데 replace에 value를 문자열로 넣기 위해서는 '0', '1' 이렇게 넣어야 했다.
마지막에 int( )를 통해 한 번에 숫자로 변환해준다.
[다른 풀이]
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함수: 리스트의 각 요소에 대해 인덱스와 해당 문자열을 동시에 가져옴.
def solution(numbers):
dic = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
i=0
for word in dic:
numbers = numbers.replace(word, str(i))
i+=1
return int(numbers)
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)
[참고]
딕셔너리 관련 블로그 글
https://blog.naver.com/sw4r/221504133335