다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
https://programmers.co.kr/learn/courses/30/lessons/81301
def solution(s):
numbers = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4,
'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}
for num in numbers:
s = s.replace(num, str(numbers[num]))
return int(s)
어떤 구조가 좋을까 생각했다. 간결하게 코드를 적고싶어 위와 같이 작성했다.
위 두 가지로 풀이가 나뉘었다.
2번은 숫자가 아니라면 일일이 완성된 영단어가 맞는지 확인하는 방향이었다. 임시 변수에 영단어를 저장하고, 완성된 단어라면 숫자로 치환하는 방법이다. in 연산자가 dictionary에서는 O(1)이라는 점을 이용해서 실행속도 개선이 가능했다.