일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 투포인터
- 백준 #알고리즘 #파이썬 #코딩테스트
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 코딩테스트
- dp
- java #자바 #동빈나
- java #자바
- css #웹 #생활코딩
- react #리액트 #동빈나
- 다이나믹프로그래밍
- 자바 #java
- DFS
- css #생활코딩 #웹
- 알고리즘
- java #자바 #나동빈
- 파이썬
- PYTHON
- 재귀
- 백준
- 백트랙킹
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 프로그래머스
- BFS
- 파이썬 #백준 #알고리즘 #코딩테스트
- java #자바 #생활코딩
- 다익스트라
- Dijkstra
- 백준 #파이썬 #알고리즘 #코딩테스트
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
Archives
- Today
- Total
커리까지
[프로그래머스] 2021 카카오 숫자 문자열과 영단어 파이썬 본문
728x90
SMALL
문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 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초
제출답안
import sys
input = sys.stdin.readline
eng_list = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5,
'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}
def solution(s):
answer = word = ''
for text in s:
if text.isdigit():
answer += text
else:
word += text
if word in eng_list.keys():
answer += str(eng_list[word])
word = ''
return int(answer)
- 우선 숫자 사전을 작성
- replace로 하고 있었는데 잘못해서 런타임 에러 발생
- 그래서 다른 방법으로 생각
- 우선 숫자이면 새로운 문자열에 더해주고 문자면 계속 돌면서 문자 변수에 추가
- 그 문자 변수가 딕셔너리에 있으면 그 값을 새로운 문자열에 더해줌
- 마지막에 숫자로 바꿔서 return
### replace로 구상했다가 안됐던 풀이
### 이렇게 하면 된다는걸 알아서 같이 작성
def solution(s):
for idx, value in eng_list.items():
s = s.replace(idx, str(value))
return int(s)
- 처음에 replace로 풀이를 했는데 인덱스로 접근해야 한다는 생각에 복잡하게 풀이를 했었음
- 이렇게 하면 된다는 것을 깨달음
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[백준] 5585번 거스름돈 파이썬 (0) | 2021.07.15 |
---|---|
[백준] 7600번 문자가 몇갤까 파이썬 (0) | 2021.07.14 |
[백준] 1806번 부분합 파이썬 (0) | 2021.07.10 |
[백준] 11502번 세 개의 소수 문제 파이썬 (0) | 2021.06.17 |
[프로그래머스] 2020 KAKAO BLIND 자물쇠와 열쇠 파이썬 (0) | 2021.06.14 |
Comments