포시코딩

[프로그래머스][Lv.0] 영어가 싫어요 본문

자료구조알고리즘/문제풀이

[프로그래머스][Lv.0] 영어가 싫어요

포시 2022. 12. 15. 12:46
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120894

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

def solution(numbers):
    answer_str = ''
    number_dict = {
        'zero': '0', 'one': '1', 'two': '2', 'three': '3', 
        'four': '4', 'five': '5', 'six': '6', 'seven': '7', 
        'eight': '8', 'nine': '9'
    }
    
    target = ''
    for char in numbers:
        target += char
        
        if target in number_dict:
            answer_str += number_dict[target]
            target = ''
    
    return int(answer_str)

 

다른 사람 풀이

def solution(numbers):
    for num, eng in enumerate(["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]):
        numbers = numbers.replace(eng, str(num))
    return int(numbers)

와 이 풀이는.. 보고 소름이 돋았다.

인덱스로 활용할 생각을 왜 못했을까..

 

어렴풋이 글자에 숫자 매칭하는걸 직접 쓰면서

영어 정도면 해당 단어에 맞게 숫자로 바꿔주는 기능 정도 찾아보면 있지 않을까?

어떤 알고리즘이 있지 않을까?

생각했던 나 자신을 반성하게 만들었다.

 

시간복잡도

시간복잡도는 둘 다 O(N)

728x90