[python/알고리즘] 프로그래머스 숫자 문자열과 영단어

·2024년 11월 30일
0

알고리즘 코드카타 46번 - 숫자 문자열과 영단어

처음 제출한 코드

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

    i = 0
    while i < len(s):
        if s[i].isnumeric(): # 숫자면 pass
            answer += s[i]
            i += 1
        else: # 알파벳이면
            j = i + 1    # j: 알파벳 끝 인덱스
            while True:
                if s[i:j+1] in dict:
                    number = dict[s[i:j + 1]]
                    answer += str(number)
                    i = j + 1
                    break
                else:
                    j += 1

    return int(answer)

몇 십 분 .. 어쩌면 한 시간 이상 짰다. 다 풀고 다른 사람들이 푼 코드를 살펴보고 나서야 정말 쉽게 풀 수 있는 문제라는 걸 깨달았다 ... 너무 충격적이라서 잊어버리고 싶지 않은 마음에 기록한다 ..

다시 짠 간결한 코드

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

고작 replace를 떠올리지 못했다는 것이 매우 충격적이다 .. . .

profile
To Dare is To Do

0개의 댓글