알고리즘/프로그래머스(Programmers)

[알고리즘/프로그래머스] 숫자 문자열과 영단어 [파이썬/구현/문자열]

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

 

프로그래머스

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

programmers.co.kr

2021 카카오 채용연계형 인턴쉽 기출문제.

 

쉬운 문제인데 

내 풀이가 테케 몇개 실패해서 왜인지 싶다. 아직도 이유를 잘 모르겠다.

 

 

파이썬 풀이 1)

리스트 두 개와 zip 활용

def solution(s):
    hangul = ['zero','one', 'two','three','four', 'five', 'six', 'seven', 'eight', 'nine']
    arab = [i for i in range(len(hangul))]

    for h, a in zip(hangul, arab):
        s = s.replace(h, str(a))
    answer=int(s)
    return answer

 

파이썬 풀이 2)

딕셔너리 활용

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

 

 

틀리는 파이썬 풀이) 

string으로 붙이는 방법

테스트케이스 두개 빼곤 모두 실패한다. 

 def solution(s):
    dic={'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9', 'zero': '0'}
    answer=''
    for key, value in dic.items():
        if key in s:
            answer += value
        elif value in s:
            answer += value
    return int(answer)