728x90
https://programmers.co.kr/learn/courses/30/lessons/81301
접근
숫자에 대한 영단어를 리스트에 저장하여 활용한다.
입력받은 문자열을 순차적으로 탐색하여 숫자일 때는 그대로 최종해에 추가하고 영문일 때는 임시로 저장하는 문자에 추가한다. 이 문자가 리스트안에 포함되어있을 때 해당 문자의 인덱스를 반환하고 문자열로 변환하여 최종해에 추가한다.
구현
- numbers라는 리스트에 인덱스는 숫자 값에는 인덱스에 해당하는 영문을 저장한다.
- while문을 통해 입력받은 s를 순차적으로 탐색한다.
- 현재 문자가 숫자일 때는 answer에 바로 추가하고
- 아닐 때는 c에 문자를 추가하고 c가 numbers에 있을 때 c의 인덱스를 반환하고
- 반환한 숫자를 문자열로 변환하여 answer에 추가한다.
def solution(s):
answer = ''
N = len(s)
numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
idx = 0
c = ''
while idx < N:
if s[idx].isdigit():
c = ''
answer += s[idx]
else:
c += s[idx]
if c in numbers:
number = numbers.index(c)
answer += str(number)
c = ''
idx += 1
answer = int(answer)
return answer
다른 사람의 풀이
딕셔너리와 replace()를 활용할 수 있었다. 딕셔너리에 영문을 key, 숫자를 value로 저장하여 이를 순차적으로 탐색하여 replace()로 해당 영문이 있을 때 숫자로 변경한다.
def solution(s):
answer = s
number_dict = {
'zero': '0', 'one': '1', 'two': '2',
'three': '3', 'four': '4', 'five': '5',
'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'
}
for k, v in number_dict.items():
answer = answer.replace(k, v)
answer = int(answer)
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 1] 실패율 (0) | 2021.08.03 |
---|---|
[Level 1] 키패드 누르기 (0) | 2021.07.31 |
[Level 2] 괄호 회전하기 (0) | 2021.06.15 |
[Level 3] 베스트 앨범 (0) | 2021.06.07 |
[Level 2] 게임 맵 최단거리 (0) | 2021.06.07 |