📌 문제
📌 풀이
const input = require('fs').readFileSync('/dev/stdin').toString().split(' ');
const a = parseInt(input[0]);
const b = parseInt(input[1]);
const c = parseInt(input[2]);
console.log(a+b+c);
다른 분들은 어떻게 풀었는지 궁금해서 찾아보던 중 reduce()
를 사용한 풀이를 접하고 정리해보고자 합니다.
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split(" ").map(Number);
const answer = input.reduce((a, b) => a + b);
console.log(answer)
map(Number)
: map() 은 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다. 여기서 map(Number)는 Number 형 변환 함수를 통해 모든 배열 요소를 숫자로 변환한다.reduce()
: 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환한다.
reduce()
함수에 대해 좀 더 자세히 정리해 보겠습니다.
arr.reduce(callback[, initialValue])
const array1 = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
(accumulator, currentValue) => accumulator + currentValue,
initialValue
);
console.log(sumWithInitial);
// Expected output: 10
callback : 배열의 각 요소에 대해 실행할 함수. 아래 네 가지 인수를 받는다.
- accumulator : 누산기. 콜백의 반환값을 누적. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값임
- currentValue : 현재 값
- currentIndex (optional) : 현재 인덱스. initialValue를 제공한 경우 0, 아니면 1부터 시작함
- array (optional) : 원본 배열. reduce()를 호출한 배열
initialValue : 콜백의 최초 호출에서 첫 번째 인수에 제공하는 값. 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용함. 빈 배열에서 초기값 없이 reduce()를 호출하면 오류가 발생함 (*initialValue에는 배열도 들어갈 수 있음)
reduce()
를 제대로 사용하면 map()
이나 filter()
등도 모두 reduce()로 실행 가능하다고 한다.
아직은 사용해본 경험이 없어서 익숙하지 않지만 잘 익혀둬야겠다.
728x90
'배움 기록 > 코테 연습' 카테고리의 다른 글
[알고리즘] 백준 2480번 : JavaScript(Node.js) 풀기 (0) | 2023.05.29 |
---|---|
[알고리즘] 백준 2884번 : JavaScript(Node.js) 풀기 (1) | 2023.05.29 |
[알고리즘] 백준 9498번 : JavaScript(Node.js) 풀기 (0) | 2023.05.21 |
[알고리즘] 백준 2588번 : JavaScript(Node.js) 풀기 (0) | 2023.05.07 |
[알고리즘] 백준 1000번 : JavaScript(Node.js) 풀기 (0) | 2023.05.01 |
댓글