[프로그래머스 알고리즘] 프로그래머스 Lv.1: 숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십) / 파이썬 Python3
🔔 문제
출처 : https://programmers.co.kr/learn/courses/30/lessons/81301
문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 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 |
입출력 예 설명
입출력 예 #1
- 문제 예시와 같습니다.
입출력 예 #2
- 문제 예시와 같습니다.
입출력 예 #3
- “three”는 3, “six”는 6, “seven”은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.
- 입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.
입출력 예 #4
-
s
에는 영단어로 바뀐 부분이 없습니다.
제한시간 안내
- 정확성 테스트 : 10초
🔐 해결 (소스 코드)
# 프로그래머스 lv.1 숫자 문자열과 영단어
def solution(s):
answer = s # s를 그대로 받아서 정답 변수에 넣음
dic_words = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4',
'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
for k, v in dic_words.items(): # items함수는 딕셔너리의 key, value를 반환
answer = answer.replace(k, v) # replace는 문자열을 변경하는 함수,
# 문자열 안에서 특정 문자를 새로운 문자로 변경
# 여기서는, 문자로 되있는 것을 숫자로 바꾸도록 함
return int(answer)
📝 후기 & 넋두리
이번 문제를 풀면서 느꼈던 것은 문제를 풀 때 활용할 수 있는 다양한 함수들을 숙지하고 있느냐가 중요하다는 것이었다.
함수들을 미리 숙지하고 있다면, 검색하는 시간을 줄일 수 있고, 생각하고 있는 접근법대로 바로바로 풀 수 있기 때문이다.요즘 알고리즘 수준을 어떻게 하면 더 올릴 수 있을까 고민하고 있다.
수준 높은 문제를 시도하고 푸는데 더딘 것 같이 느껴지기 때문이다.
(플레이데이터 알고리즘 특강 깊이우선탐색 & 너비우선탐색 강의를 정리한 이후로 관련된 문제를 못 풀고 있다보니 더 그런것 같다)좋은 책이나 유튜브 자료를 활용해서 프로그래머스에서 Lv.2 정도는 스스로 간단히 풀 수 있는 수준으로 빨리 만들고, 국비지원되는 알고리즘 강의를 수강해서 실력 점프를 빨리 해야되겠다.
화이팅!!! 😥💪
Leave a comment