코딩테스트

[프로그래머스 ]숫자 문자열과 영단어(python)

다있는닉네임 2023. 1. 6. 12:15

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

 

프로그래머스

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

programmers.co.kr

문제

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

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

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

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

숫자영단어

0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

제한사항

1 ≤ s의 길이 ≤ 50 s가 “zero” 또는 “0”으로 시작하는 경우는 주어지지 않습니다. return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

입출력 예

s result
“one4seveneight” 1478
“23four5six7” 234567
“2three45sixseven” 234567
“123” 123

풀이

def solution(s):

    answer = s

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

    for key,value in num_dict.items():
        answer = answer.replace(key,value)

    return eval(answer)

  1. 영단어와 숫자를 매핑 시켜줄 딕셔너리가 필요
  2. 딕셔너리 for문을 돌면서 영단어가 나올때 그에 맞는 숫자값으로 치환

관련 개념

  1. 딕셔너리(Dictionary)
    • 키(key)-값(value)를 요소로 가지는 것
    • {“key1” :”value1”} 구조를 가지고 있다.
    • 키값은 중복이 되지 않지만, value값은 중복이 가능
  2. 딕셔너리 for문에서 key,value사용법
    • key,value한번에 사용방법
 for key,value in num_dict.items(): print(key,value)
  • 딕셔너리 형식에 items()를 사용하여 for문 돌리면 key,value 값을 한번에 얻을 수 있다.
  1. replace
    • 문자열 변경하는 함수
    • 사용방법 : str.replace(변경하고싶은문자,바꿀문자)
  2. eval
    • 문자열도 된 수식을 받아 그 결과를 return해주는 함수