Algorithm

[Baekjoon]25214번 크림 파스타 - Javascript

호밀이 2024. 2. 7. 21:54

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

 

25214번: 크림 파스타

각 \(A_i\)가 추가된 직후의 문제의 답 \(N\)개를 공백으로 구분하여 출력한다.

www.acmicpc.net

 

예제 입력 1 복사

6
50 100 70 110 10 100

예제 출력 1 복사

0 50 50 60 60 90

예제 입력 2 복사

6
3 3 2 8 3 1000000000

예제 출력 2 복사

0 0 0 6 6 999999998

 

문제풀이(1)

문제를 해석해보면 아래와 같았다.

1. 첫번째 값을 최소값으로 지정한다.
2. 두번째 값부터 반복문을 순회하며 이전의 결과값과 현재값 - 최소값중 큰값을 dp 배열에 추가한다.
3. 이전값과 현재값중 최소값을 찾는다.
4. 2~3번까지 반복한다.

const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const input = require("fs").readFileSync(filePath).toString().trim().split("\n");

const N = Number(input.shift());
const arr = input[0].split(" ").map(Number);

const dp = [0];
let minNum = arr[0];

for (let i = 1; i < N; i++) {
  dp[i] = Math.max(arr[i] - minNum, dp[i - 1]);
  minNum = Math.min(minNum, arr[i]);
}

console.log(dp.join(" "));