
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const inputs = fs.readFileSync(path).toString().trim().split('\r\n');
let t = Number(inputs.shift());
let front = 0;
function getMaxProfits(n, stock) {
let profit = 0;
let max = 0;
for (let i = n - 1; i >= 0; i--) {
if (max < stock[i]) max = stock[i];
else profit += max - stock[i];
}
return profit;
}
while (t > 0) {
const n = Number(inputs[front++]);
const stock = inputs[front++].split(' ').map(Number);
const profit = getMaxProfits(n, stock);
console.log(profit);
t -= 1;
}
⏰ 소요한 시간 : -
그리디 문제유형 풀이 봤다...!!
가장 마지막 값부터 반복 순회한다. 현재 순회중인 요소가 max값보다 크다면 max값을 업데이트 해주고, 그게 아니라면 max 값에서 현재 인덱스 값인 stock[i]값을 빼서 이익만 profit 변수에 더해준다.
실버2라니 거짓말이야..