문제
https://school.programmers.co.kr/learn/courses/30/lessons/120894
설계
파이썬
def solution(numbers):
answer = []
alpha = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
end = len(numbers)
for start in range(len(numbers) - 3, -1, -1): # 최소 3글자 이상이므로
if numbers[start:end] in alpha:
for i in range(10):
if numbers[start:end] == alpha[i]:
answer.append(str(i)) # join을 위해 문자열로 저장
end = start
break
answer.reverse()
answer = ''.join(answer)
return int(answer) # 정수로 변환하여 출력
자바스크립트
str.substr(start, length)
- 특정 index에서 원하는 길이만큼 잘라서 문자열로 리턴한다.
- 즉 2번째 인자인 length는 index가 아니라 길이이다.
str.substring(start, end)
- 시작 index에서 끝 index 전까지 문자열을 잘라서 리턴한다.
- 마지막 end index를 포함하지 않는다.
function solution(numbers) {
dic = {"zero": '0', "one": '1', "two": '2', "three": '3', "four": '4', "five": '5', "six": '6', "seven": '7', "eight": '8', "nine":'9'}
answer = ''
let start = 0
let cnt = 0 // 길이만큼 자른다.
let now = 0
while (now < numbers.length) {
if(dic[numbers.substr(start, cnt)]) {
answer += dic[numbers.substr(start, cnt)]
start = now
cnt = 0
}
cnt ++
now ++
}
answer += dic[numbers.substr(start, cnt)]
return parseInt(answer); // 문자열 -> 정수로 변환
}
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] 가까운 수 - 파이썬, 자바스크립트 (0) | 2023.01.22 |
---|---|
[프로그래머스] 369게임 - 파이썬, 자바스크립트 (0) | 2023.01.22 |
[프로그래머스] 인덱스 바꾸기 - 파이썬 (0) | 2023.01.22 |
[프로그래머스] 한 번만 등장한 문자 - 파이썬 (0) | 2023.01.22 |
[프로그래머스] 약수 구하기 - 파이썬 (0) | 2023.01.22 |