728x90
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/81301
📌 문제 접근 방법
- 영단어 숫자와 일반 숫자를 짝지어서 딕셔너리에 저장한다.
- 문자열을 순회하며 숫자일 경우 바로 answer에 append하고 문자일 경우 temp에 더해준다.
- 다시 숫자를 만나면 temp에 저장된 값을 함수에 넣어서 숫자로 변환해준다.
- 영단어 숫자를 살펴보니 길이가 3, 4, 5로만 이루어져 있어서 3, 4, 5만큼 끊어서 확인을 해줬다.
- 변환된 숫자들을 answer에 append하고 위의 작업을 반복한다.
+) 찾아보니 replace를 사용하여 한 번에 변환한 풀이도 있었다. 간단하고 좋은 듯!
📌 코드
from collections import deque
def solution(s):
def str_to_int(string):
number = {
'zero' : '0', 'one' : '1', 'two' : '2',
'three' : '3', 'four' : '4', 'five' : '5',
'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9'
}
numbers = []
while len(string) > 5:
if string[:3] in number.keys():
numbers.append(number[string[:3]])
string = string[3:]
elif string[:4] in number.keys():
numbers.append(number[string[:4]])
string = string[4:]
elif string[:5] in number.keys():
numbers.append(number[string[:5]])
string = string[5:]
numbers.append(number[string])
return deque(numbers)
answer = ''
temp = ''
for word in s:
if word.isnumeric():
if temp:
queue = str_to_int(temp)
while queue:
answer += queue.popleft()
temp = ''
answer += str(word)
else:
temp += word
if temp:
queue = str_to_int(temp)
while queue:
answer += queue.popleft()
return int(answer)
728x90
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[PG/Python] 자물쇠와 열쇠 (0) | 2022.01.10 |
---|---|
[PG/Python] 거리두기 확인하기 (0) | 2022.01.08 |
[PG/Python] 보석 쇼핑 (0) | 2022.01.08 |
[PG/Python] 베스트앨범 (0) | 2021.12.29 |
[PG/Python] 표 편집 (0) | 2021.12.27 |
댓글