Algorithm/Baekjoon(Node.js)

[JavaSrcipt] Baekjoon - 11720 : 숫자의 합

비망노트 2021. 9. 10. 23:52

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

 

예제입력 예제출력
1
1
1
5
54321
15
25
7000000000000000000000000
7
11
10987654321
46

 

⭕ 풀이

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

const N=Number(input[0]);
const num=input[1].split('');

let sum=0;

for(let i=0;i<N;i++){
    sum += Number(num[i]);
}
console.log(sum);
const input=require('fs').readFileSync('/dev/stdin').toString().split('\n');
const N=Number(input[0]);

let arr = input[1].split('').map(x => Number(x));

let answer = arr.reduce(function(acc,v){
 return acc + v});
 

console.log(answer)

첫풀이는 너무 간단해보여서 전에배웠던 

map과 reduce를 사용해서 풀어봤다.

 

let arr로 input[1]을 ''로 나눈걸 다시 배열로 생성하고

 

그렇게 만든 arr를 reduce(function(acc,v){

    return acc + v });

를 통해서 arr배열의 누적합을 계산하게 만들었다.

 

 

✅ 다른분의 풀이

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const  [number, stringArray] = input; ❗
const arr = stringArray.split('').map(Number); ❗
let res = 0;
for (let i = 0; i < number; i++) {
    res += arr[i];
}
console.log(res);

[number, stringArray] = input;

이 선언방식이 신기해서 가져왔다.

const input=['5',
            '54321']
const  [number, stringArray] = input;
const arr = stringArray.split('').map(Number);

console.log(number) // 5
console.log(stringArray) // 54321
console.log(arr) // [ 5, 4, 3, 2, 1 ]

이런식으로 인식한다.

 

 

-출처

https://www.acmicpc.net/problem/11720

 

map

https://record-note.tistory.com/34

reduce

https://record-note.tistory.com/41