[백준 알고리즘] Node.js 1551. 수열의 변화

2023. 3. 20. 14:11코딩연습

1. 문제

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

 

1551번: 수열의 변화

첫째 줄에 수열의 크기 N과 K가 주어진다. N은 20보다 작거나 같은 자연수이고, K는 0보다 크거나 같고, N-1보다 작거나 같은 정수이다. 둘째 줄에는 수열이 ‘,’로 구분되어 주어진다. 수열을 이루

www.acmicpc.net

 

2. 풀이

- 문제에서 크기가 n인 수열을 통하여 만든 새로운 수열을 만들고, 만들어진 수열을 통하여 다시 수열을 만드는 방법으로 k번 반복하였을 때 만들어진 수열을 구하는 문제이다.

- k가 0일 경우에는 입력 값 그대로 출력하면 된다.

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

const [n,k] = inputs.shift().split(' ').map(Number);

let answerArr = [];

if(k === 0) console.log(inputs.join(','));
else {
    let splitInputs = inputs[0].split(',').map(Number);
    for(let i = 0; i < k; i++){
        answerArr = [];
        for(let j = 0; j < splitInputs.length; j++){
            let calcNum = splitInputs[j+1] - splitInputs[j]
            if(!isNaN(calcNum)) answerArr.push(calcNum)
        }
        splitInputs = answerArr;
    }
}

console.log(answerArr.join(','))

 

3. 정리

- 새로운 수열을 만드는 과정에서 NaN 값을 방지하기 위해 isNaN() 메서드를 사용했다.

이후 신규 배열을 기존 값에 덮어씌우는 방식으로 반복하였다.