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)
- 영단어와 숫자를 매핑 시켜줄 딕셔너리가 필요
- 딕셔너리 for문을 돌면서 영단어가 나올때 그에 맞는 숫자값으로 치환
관련 개념
- 딕셔너리(Dictionary)
- 키(key)-값(value)를 요소로 가지는 것
- {“key1” :”value1”} 구조를 가지고 있다.
- 키값은 중복이 되지 않지만, value값은 중복이 가능
- 딕셔너리 for문에서 key,value사용법
- key,value한번에 사용방법
for key,value in num_dict.items(): print(key,value)
- 딕셔너리 형식에 items()를 사용하여 for문 돌리면 key,value 값을 한번에 얻을 수 있다.
- replace
- 문자열 변경하는 함수
- 사용방법 : str.replace(변경하고싶은문자,바꿀문자)
- eval
- 문자열도 된 수식을 받아 그 결과를 return해주는 함수
'코딩테스트' 카테고리의 다른 글
| [프로그래머스]전화번호 목록(python) (0) | 2023.01.06 |
|---|---|
| [프로그래머스] 완주하지 못한 선수(python) (0) | 2023.01.06 |
| [프로그래머스]가운데 글자 가져오기(python) (0) | 2023.01.06 |
| [프로그래머스]이상한 문자 만들기(python) (0) | 2023.01.06 |
| [프로그래머스]자연수 뒤집어 배열로 만들기(python) (0) | 2023.01.05 |