문제
https://school.programmers.co.kr/learn/courses/30/lessons/120894
풀이
function solution(numbers) {
const numberList = {
zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9
};
Object.entries(numberList).forEach(([key, value]) => {
numbers = numbers.split(key).join(value);
});
return Number(numbers);
}
- 객체에 문자열과 숫자를 쌍으로 넣어놓는다.
- Object.entries로 순회하며 key, value를 이용해 문자열을 기준으로 split한 다음, 조각난 문자열을 value로 이어주면 문자열이 숫자로 대체된다.
- 결과물은 문자열이기 때문에 Number()로 숫자로 바꿔준다.
약간 아쉬운 점
풀고보니 굳이 Object로 문자열을 넣을 필요 없이 배열에 넣었어도 괜찮겠다는 생각이 들었다.
0번 인덱스부터 zero, one, ... 으로 들어가니까 굳이 object에 key, value 쌍으로 일일이 문자열, 숫자를 넣지 않고 그냥 for문과 index를 이용해 숫자 대체를 했으면 어떨까 하는 생각이 든다.
다른 가능한 풀이들에 대해 생각
- 배열에 zero, one, ... 문자열을 넣어놓는다. 바깥쪽 for문에서는 zero, one, ... 배열을 순회하고, 내부에서는 while문으로 indexOf가 -1이 아닐 때까지 반복하며 indexOf()에 해당하는 위치의 문자를 substring 등의 함수를 이용해 대치한다.
- zero, one, ...이 들어있는 배열을 순회하며 replaceAll('배열의 단어', 'index') 처럼 단어를 숫자로 바꾸는 작업을 한다.
'알고리즘 이론 & 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv.1 | 완주하지 못한 선수 js (0) | 2023.08.08 |
---|---|
프로그래머스 Lv.1 | 폰켓몬 js (0) | 2023.08.08 |
프로그래머스 Lv.0 | 소인수분해 (0) | 2023.07.19 |
프로그래머스 Lv.0 | 이진수 더하기 (0) | 2023.07.09 |
프로그래머스 Lv.0 | 문자열 계산하기 (0) | 2023.07.08 |