[문제]
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 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 |
[입출력 예]
s | result |
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
[나의 풀이]
def solution(s):
result = []
relation = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
arr = []
for c in s:
if c in relation.values(): # 문자가 0~9일 경우
result.append(c) # 리스트에 바로 추가
else: # 0~9가 아닐경우 변환 과정을 거침
arr.append(c) # 과정1
tmp = ''.join(arr) # 과정1
if tmp in relation.keys(): # 과정2
arr = []
result.append(relation[tmp])
return int(''.join(result)) # 과정3
약간.. 복잡하게 풀었다.... 아직 파이썬이 익숙하지 않은 탓이라 생각한다..^^
우선 relation에 영단어와 숫자의 관계를 딕셔너리로 나타냈다.
그다음, 주어진 문자열 s를 한 글자씩 검색한다.
문자가 0~9일 경우에는 리스트에 바로 추가하고,
아닐 경우에는 변환 과정을 거친다.
변환 과정은 다음과 같다.
과정 1) arr에 문자를 넣고, 그다음 문자열로 변환시켜 tmp에 넣어준다.
arr | tmp |
['o'] | 'o' |
['o', 'n'] | 'on' |
['o', 'n', 'e'] | 'one' |
과정 2) tmp가 zero~nine 중에 해당되는 게 있다면 arr을 비워주고, relation[tmp]를 result에 추가해준다.
(arr을 비우는 이유는 영단어를 또 검사해야 하므로!!)
과정 3) 리스트인 result를 문자열로 바꾼 후, 정수형으로 바꾸어서 반환!
[다른 사람의 풀이]
num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
def solution(s):
answer = s
for key, value in num_dic.items():
answer = answer.replace(key, value)
return int(answer)
가장 높은 좋아요 수를 받으신 분의 풀이를 가져왔다.
너무나도 깔끔하고.. 간단하다... ㅠㅠ
replace 하나로 해결될 수 있다는 게 놀랍다 👍👍
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[파이썬/알고리즘] 프로그래머스 - 괄호 회전하기 (0) | 2021.07.18 |
---|---|
[파이썬/알고리즘] 프로그래머스 - 짝지어 제거 (2017 팁스다운) (2) | 2021.07.15 |
[파이썬/알고리즘] 프로그래머스 - JadenCase 문자열 만들기 (정규식) (0) | 2021.06.26 |
[자바스크립트, 파이썬/알고리즘] 프로그래머스 - 크레인 인형뽑기 게임 (카카오 인턴십 문제) (0) | 2021.05.28 |
[자바스크립트/알고리즘] 프로그래머스 - JadenCase 문자열 만들기 (정규식) (0) | 2021.05.18 |