아이공의 AI 공부 도전기

[프로그래머스]  Level 1 : 숫자 문자열과 영단어 (Python)

 

     

 

 

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

 

프로그래머스

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

programmers.co.kr

코드 링크

https://github.com/stellaluminary/Programmers

 

GitHub - stellaluminary/Programmers

Contribute to stellaluminary/Programmers development by creating an account on GitHub.

github.com

Python

 

방법 1 

 

dict의 값을 기반으로 만약 해당 값의 key와 같은 것이 있다면 그것으로 치환해주는 작업을 진행해줍니다.

 

def solution(s):
    d = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
    answer = ''
    tmp = ''
    for i in range(len(s)):
        if s[i].isdigit():
            answer += s[i]
            
        elif s[i].isalpha():
            tmp += s[i]
            
            if tmp in d:
                answer += d[tmp]
                tmp = ''
    
    return int(answer)

 

 

방법 2 

 

단순히 dict를 활용한 replace 방법을 진행하는 방법 또한 존재한다.

 

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)

 

방법 3 

 

dict 외 list를 통한 깔끔한 코드를 나타낼 수도 있습니다.

그러나 이 역시 방법 2와 마찬가지로 replace를 활용합니다.

 

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)

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading