본문 바로가기
개인 공부/알고리즘 트레이닝

[python] programmers - 숫자 문자열과 영단어

by 아메리카노와떡볶이 2022. 9. 5.
728x90
programmers - 숫자 문자열과 영단어

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

 

프로그래머스

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

programmers.co.kr

 

이전 문제와 마찬가지로 정규식을 통해서 풀이했습니다.

import re

def solution(s):
    st = re.sub('zero','0',s)

    st = re.sub('one','1',st)
    st = re.sub('two','2',st)
    st = re.sub('three','3',st)
    st = re.sub('four','4',st)
    st = re.sub('five','5',st)
    st = re.sub('six','6',st)
    st = re.sub('seven','7',st)
    st = re.sub('eight','8',st)
    st = re.sub('nine','9',st)

    st = int(st)
    return st

정규식을 쓰지않고 replace를 통해 해결할 수 도 있습니다.

import re

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

 

위의 코드를 줄여주려면 dictionary 자료형과 반복문을 활용하면 짧게 구현할 수 있습니다.

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

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

 

728x90

댓글