본문 바로가기
배움 기록/코테 연습

[알고리즘] 백준 11382번 : JavaScript(Node.js) 풀기

by dygreen 2023. 5. 14.

📌 문제

 

📌 풀이

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

댓글