반응형
풀이
function solution(numbers) {
const arr = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
for (let i = 0; i < arr.length; i++) {
numbers = numbers.split(arr[i]).join(i);
}
return Number(numbers);
}
arr로 각 숫자를 구분하기 위해서 나열하는 것은 필수의 과정인 것 같다.
다만, 이것을 객체로 할 것인지 혹은 배열로 할 것인지에 따라 풀이 과정이 달라진다.
배열로 푼다면 replaceAll 메서드를 활용할 수도 있다.
function solution(numbers) {
const wordMap = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" ];
wordMap.forEach((str, idx) => {
numbers = numbers.replaceAll(str, idx);
});
return Number(numbers);
}
만약 wordMap을 객체로 구성했다면 아래와 같이 풀 수 있다.
function solution(numbers) {
const obj = {
zero: 0, one: 1, two: 2, three: 3, four: 4,
five: 5, six: 6, seven: 7, eight: 8, nine: 9
};
const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
return obj[v];
});
return Number(num);
}
replace 메서드는 특정 패턴을 찾아 다른 문자열로 대체하는 문자열 메서드이다.
g는 정규표현식에서 사용되는 플래그중 하나로 global을 의미한다는 것을 인지하고 가면 좋겠다.
이 플래그를 사용하면 문자열 내에서 해당 패턴과 일치하는 모든 부분을 찾아서 대체할 수 있다는 것이다.
g를 사용하지 않으면 문자열 내에서 첫 번째로 일치하는 것만 대체한다.
반응형
'알고리즘 PS > Javascript' 카테고리의 다른 글
[JavaScript] 백준 2565번 문제 풀이 (0) | 2023.09.23 |
---|---|
[JavaScript] 백준 1520번 문제 풀이 (0) | 2023.09.22 |
[JavaScript] 백준 11727번 문제 풀이 (0) | 2023.09.14 |
[JavaScript] 백준 1463번 문제 (0) | 2023.09.13 |
[Javascript] 프로그래머스 Lv.2 구명 보트 (0) | 2023.07.31 |