숫자 문자열과 영단어

하이·2022년 4월 26일
0

💣 문제

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 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)

어떤 구조가 좋을까 생각했다. 간결하게 코드를 적고싶어 위와 같이 작성했다.

💯 제출 후 확인한 풀이

  1. 한꺼번에 바꾸는 replace를 활용한 풀이
  2. 배열을 차례로 순회하며 바꿔나가는 풀이

위 두 가지로 풀이가 나뉘었다.

2번은 숫자가 아니라면 일일이 완성된 영단어가 맞는지 확인하는 방향이었다. 임시 변수에 영단어를 저장하고, 완성된 단어라면 숫자로 치환하는 방법이다. in 연산자가 dictionary에서는 O(1)이라는 점을 이용해서 실행속도 개선이 가능했다.

profile
안녕하세요

0개의 댓글