https://www.acmicpc.net/problem/2908
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성
해결과정
1. 주어진 문자열을 숫자타입의 배열로 바꾼다. 배열로 바꿀때 선택자는 띄어쓰기 사용
input.split(' ')
2. 바꾼 배열의 숫자들을 거꾸로 정렬
input.reduce((accumulator,currentValue)=>{},0) //숫자타입으로 변환하니까 0으로 설정
3. 정렬한 두 개의 숫자를 비교하고더 큰 숫자를 숫자타입으로 반환
const reversedValue = Number(Array.from(currentValue).reverse().join(''));
return reversedValue > accumulator ? reversedValue : accumulator
// 반환 할 변수 설정
// 현재의 값을 배열로 설정
// 배열로 설정한 현재의 값을 거꾸로 정렬하고 합쳐준다
// 반환할 값을 비교해서 더 큰값으로 설정
4. 완성
input.split(' ').reduce((accumulator, currentValue) => {
const reversedValue = Number(Array.from(currentValue).reverse().join(''));
return reversedValue > accumulator ? reversedValue : accumulator
}, 0)
5. 제출
const fs = require('fs');
const filePath = process.platform === "linux" ? '/dev/stdin' : __dirname + '/input.txt';
const input = fs.readFileSync(filePath).toString().trim();
console.log( input.split(' ').reduce((acc, curr) => {
const reversedValue = Number(Array.from(curr).reverse().join(''));
return reversedValue > acc ? reversedValue : acc
}, 0));
위에서 가장 중요하게 쓰인 메서드는 reduce();
accumulators (acc)는 반환값은 누적되기때문에
예를 들어서 input의 값이 `734 138` 일 경우에
첫번째 순회시 reversedValue 값은 437
왜냐하면 누적된 값이 없기때문에 0과 비교하기 때문이다.
0과 437을 비교하면 반환값은 437
두번째 순회시 reversedValue 값은 831
왜냐하면 누적된 값인 437과 비교하면 831이 더 크기때문이지!
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
'코딩테스트 뿌수기' 카테고리의 다른 글
[백준 11047번 node.js] 동전 0 (1) | 2024.06.09 |
---|---|
[백준 2884번 node.js] 알람 시계 (0) | 2024.06.09 |
[백준 : 11720번 node.js] 숫자의 합 (1) | 2024.06.08 |
[백준 : 10988번 node.js] 팰린드롬인지 확인하기 (0) | 2024.06.08 |
[백준 : 2753번 node.js] 윤년 (0) | 2024.06.06 |