Just Fighting

[프로그래머스] 숫자 문자열과 영단어 본문

Algorithm/코딩테스트 연습

[프로그래머스] 숫자 문자열과 영단어

yennle 2022. 1. 11. 12:58
728x90

 

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

 

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

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

programmers.co.kr

 

 

<문제 설명>

숫자의 일부 자릿수가 영어로 된 카드를 숫자로 다시 바꾸는 문제이다.

one4seveneight => 1478

 

 

 

<문제 이해>

일단 숫자들을 딕셔너리에 넣어놓고, for문을 돌려 숫자면 정답에 바로 추가하고,

문자면 temp에 모아놨다가 딕셔너리에 있는 숫자에 temp가 있으면 정답에 추가하는 방식을 생각했다.

 

 

 

<문제 풀이>

def solution(s):
    answer = ""
    number = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 
              'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
    
    temp = ""
    for ss in s:
        if not ss.isalpha() : answer += ss
        else: temp += ss
        
        if temp in number:
            answer += number[temp]
            temp = ""
    
    return int(answer)

 

 

 

<풀이 개선>

다른 사람들이 작성한 코드르 보았는데, replace함수를 이용해

훨씬 간결하고 쉬운 코드를 작성한 것을 보았다. 

def solution(s):
    number = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 
              'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
    
    for num in number:
        s = s.replace(num, number[num])
    
    return int(s)

 

 

 

 

replace 어제도 써먹은 함수인데 왜 기억하지 못했을까,,,,,,,,,,,,,,,,ㅋㅋ

728x90
Comments