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

일단 해볼게·2023년 4월 19일
0

프로그래머스

목록 보기
67/106

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

내 답

def solution(s):
    nums = "0123456789"
    num_english = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    answer = ""
    temp = ""
    
    for i in range(len(s)):
        if s[i] in nums: # 숫자일 경우 answer에 추가
            answer += s[i]
        else: # 영어일 경우
            temp += s[i] # 문자 하나씩 temp에 저장 
            for j in range(len(num_english)): 
                if num_english[j] == temp: # 저장된 문자가 영어로된 숫자일 때
                    answer += nums[j] 
                    temp = ""
    
    return int(answer)

다른사람 답

num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}

def solution(s):
    answer = s
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)

dictionary에 0부터 9까지 값을 할당하고 replace로 변경한다. 딕셔너리의 검색속도가 O(1)이므로 더 나은 코드로 보인다.

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글