본문 바로가기
ALGORITHM/PROGRAMMERS

[PG/Python] 숫자 문자열과 영단어

by 안녕나는현서 2022. 1. 8.
728x90

📌 문제

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

 

📌 문제 접근 방법

  1. 영단어 숫자와 일반 숫자를 짝지어서 딕셔너리에 저장한다.
  2. 문자열을 순회하며 숫자일 경우 바로 answer에 append하고 문자일 경우 temp에 더해준다.
  3. 다시 숫자를 만나면 temp에 저장된 값을 함수에 넣어서 숫자로 변환해준다.
  4. 영단어 숫자를 살펴보니 길이가 3, 4, 5로만 이루어져 있어서 3, 4, 5만큼 끊어서 확인을 해줬다.
  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

댓글