📝 문제
💡 네오와 프로도가 숫자놀이를 하고 있습니다.
네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면
프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나,
혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다.
s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
[제한사항]
- 1 ≤ s의 길이 ≤ 50
- s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✅ 풀이
def solution(s):
answer = ''
dict = {
"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4",
"five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"
}
temp = ''
for item in s:
if item in dict.values():
answer += item
continue
temp += item
if temp in dict.keys():
answer += dict[temp]
temp = ''
return int(answer)
💡 각 영단어를 키로, 해당하는 숫자를 값으로 가지는 딕셔너리를 만들었다.
카드의 각 단어들 중 숫자가 있는 경우 바로 정답 문자열에 그 숫자를 붙이고 넘어갔고,
그렇지 않은 경우, 딕셔너리의 키에 해당하는 문자가 될 때까지 단어를 이어주었다.
단어가 이어져서 하나의 숫자를 나타내는 단어가 되면, 그에 해당하는 수를 정답에 붙였다.
정답을 정수형으로 반환해주어야 해서 마지막에 형변환까지 해주었다.