728x90

문제 70. (2021-07-09)

 

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

Programmers(2021 카카오 채용연계형 인턴십). 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

1478 → "one4seveneight"

234567 → "23four5six7"

10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

제한사항

* 1 ≤ s의 길이 ≤ 50

* s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.

* return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

 


❧ 입출력 예


❧ 정답

def solution(s):
    answer = ''
    std = ''
    dic = ['zero','one','two','three','four','five','six','seven','eight','nine']
    for i in range(len(s)):
        if str(s[i]).isdigit():
            answer += str(s[i])
        else:
            std+=s[i]
            if std in dic:
                answer += str(dic.index(std))
                std = ''

    return int(answer)

1️⃣ 입력 문자열 s 가 숫자일 경우, 리턴 문자열 answer에 추가

'str'.isdigit( ) : 'str'이 숫자일 경우 True 리턴

2️⃣ 숫자가 아닌 경우, std(standard) 변수에 현재 문자열 추가 후 dic 리스트에 std와 일치하는 문자열(숫자 영단어) 이 있을 경우, dic에서 일치하는 해당 문자열을 최종 리턴 문자열 answer에 추가한다.

728x90