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

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

by dygreen 2023. 10. 16.

📌 문제

 

📌 풀이

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');

const str = input[1].toString();
const arr = Array.from(str, (data) => Number(data));
const sum = arr.reduce((acc,curr) => acc + curr, 0);

console.log(sum);
  • 둘째 줄의 숫자를 문자열로 바꾼다.
  • Array.from(arrayLike, mapFn) : 해당 메서드는 문자열로 바꾼 str 을 배열로 변경하기 위해 사용한다.
    (숫자의 합을 출력하기 위해) 두 번째 인자에서 함수를 실행해 문자열을 다시 숫자로 바꾸어 배열을 만든다.

    * 위 메서드는 첫 번째 인자로 유사 배열 객체를 받아서 얕은 복사를 하여 새로운 배열 객체로 만들어 준다.
    여기서 말하는 '유사 배열 객체'란, 길이 속성과 인덱스 속성을 가진 객체를 의미한다.
    문자열은 기본적으로 반복 가능한 객체이다. 따라서 위 메서드를 사용하기 위해 input[1] 을 문자열로 바꾼 것이다.
    두 번째 인자는 배열의 모든 요소에 대해 호출할 함수다. 이 함수를 제공하면 배열에 추가할 모든 값이 이 함수를 통해 먼저 전달되고, mapFn의 반환 값이 대신 배열에 추가된다. (공식 문서)

  • reduce() : 해당 메서드를 사용하여 배열 안의 값들을 더해 출력한다.

 

 

숫자를 배열로 바꾸는 방법 2가지

1. Array.from()

const num = 1234;

// 정수 -> 문자열로 변경
const str = num.toString();

// element를 문자열에서 정수로 변경
const mapfn = (arg) => Number(arg);

// 문자열 -> 배열로 변경
const newArr = Array.from(str, mapfn);

console.log(newArr);  // [ 1, 2, 3, 4 ]

 

2. split('').map(Number)

const num = 1234;

// 정수 -> 문자열로 변경
const str = num.toString();

// element를 문자열에서 정수로 변경
const mapfn = (arg) => Number(arg);

// 문자열 -> 배열로 변경
const newArr = str.split('').map(mapfn);

console.log(newArr);  // [ 1, 2, 3, 4 ]
728x90

댓글