프로그래머스, 숫자 문자열과 영단어
2021년 카카오 채용연계형 인턴십
TL;DR
- 문자열(string)
- 딕셔너리(dictionary)
문제 분석
1. 숫자의 일부 자릿수가 영단어로 바뀌었거나, 혹은 바뀌지 않고 그대로인 문자열 s를 원래 의미하는 숫자로 반환하는 함수를 완성하라.
- 입출력 예시를 통해 원하는 답을 확인할 수 있다.
입출력 형태
- 주어진 문자열에 대해 글자로 주어진 문자열을 숫자로 변환하여 결과를 반환하면 된다.
풀이
def solution(s):
answer = ''
dic = {
'zero': '0', 'one': '1', 'two': '2', 'three': '3',
'four': '4', 'five': '5', 'six': '6', 'seven': '7',
'eight': '8', 'nine': '9'
}
tmp = ''
for c in s:
if c in '0123456789':
answer += c
else:
tmp += c
if tmp in dic.keys():
answer += dic[tmp]
tmp = ''
return int(answer)
- 글자로 된 숫자를 해당하는 숫자로 바꾸기 위한 딕셔너리(dictionary)를 선언한다.
- 주어진 문자열을 조회하며, 이미 숫자로 되어 있는 경우 별 다른 처리를 하지 않고 정답에 붙인다.
- 문자로 주어졌을 경우, 어떤 문자인지 확인하기 위한 tmp 변수를 갱신해나간다.
- 만약 tmp가 숫자를 타내는 문자가 된다면, 해당 값을 key로 해당하는 value를 정답에 붙인다. 그리고 tmp를 초기화한다.
- 숫자로 반환하기를 문제에서 요구하고 있으므로 숫자로 변환하여 반환한다.
개선된 풀이
def solution(s):
answer = ''
dic = {
'zero': '0', 'one': '1', 'two': '2', 'three': '3',
'four': '4', 'five': '5', 'six': '6', 'seven': '7',
'eight': '8', 'nine': '9'
}
answer = s
for key, value in dic.items():
answer = answer.replace(key, value)
return int(answer)
- replace() 메소드를 사용할 경우 보다 깔끕하게 문제를 해결할 수 있다.
- 딕셔너리에 있는 key와 value 쌍을 조회하며 해당하는 key가 존재할 경우 해당 value로 치환한다.
- 숫자로 변환하여 반환한다.
반응형
'개발 > Algorithm' 카테고리의 다른 글
[리트코드] Permutations(python) (0) | 2021.07.15 |
---|---|
[리트코드] Letter Combinations of a Phone Number(python) (0) | 2021.07.14 |
[프로그래머스] 올바른 괄호(python) (0) | 2021.07.05 |
[리트코드] Number of Islands(python) (0) | 2021.07.04 |
[리트코드] Top K Frequent Elements(python) (0) | 2021.06.29 |