CodingTest/programmers

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

ukunV 2021. 9. 2. 20:00

Link

 

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

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

programmers.co.kr

 

Solution

replace() 하나만 떠올렸으면 금방 풀 문제를... 왜 문제를 풀땐 생각이 안날까 항상 답답하다...

해당 문제를 통해 replace()를 익히고 가길 바란다!

 

def solution(s):
    answer = []

    nums = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

    t = ''
    for i in range(len(s)):
        if ord(s[i]) >= 48 and ord(s[i]) <= 57:
            answer.append(s[i])
        else:
            t += s[i]

        if t in nums:
            if t == 'zero':
                answer.append('0')
            elif t == 'one':
                answer.append('1')
            elif t == 'two':
                answer.append('2')
            elif t == 'three':
                answer.append('3')
            elif t == 'four':
                answer.append('4')
            elif t == 'five':
                answer.append('5')
            elif t == 'six':
                answer.append('6')
            elif t == 'seven':
                answer.append('7')
            elif t == 'eight':
                answer.append('8')
            elif t == 'nine':
                answer.append('9')

            t = ''

    return int(''.join(answer))
🔑 key point: replace()

 

Other Solution

def solution(s):
    words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

    for i in range(len(words)):
        s = s.replace(words[i], str(i))

    return int(s)
def solution(s):
    nums = {'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9'}

    for key, value in nums.items():
        s = s.replace(key, value)

    return int(s)