[백준/JS] 11501 주식

코린·2023년 10월 31일
0

알고리즘

목록 보기
39/44
post-thumbnail

문제

🧐 문제 풀이

그리디로 풀면 되는 문제입니다.

가장 큰 이익을 보는 경우는 쌀 때 사서 비쌀 때 팔면 됩니다.

앞에서 부터 살펴보게 되면 반복문을 한 없이 돌려야 합니다.....
그렇다면 뒤에서부터 배열을 보면 됩니다!

뒤에서 부터 값을 보고
앞에 값을 하나씩 살피면서 자신보다 작을 경우에는 이익에 현재 값과 비교 값의 차이를 더해주고
자신보다 클 경우에는 비쌀 때의 금액을 갱신시켜주면 됩니다.

📝 결과 코드

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

let tc = Number(input.shift());

for (let t = 0; t < tc; t++) {
  let N = Number(input.shift());

  let money = input.shift().split(" ").map(Number);

  let cur = money[N - 1];
  let profit = 0;
  for (let m = N - 2; m >= 0; m--) {
    if (money[m] < cur) {
      profit += cur - money[m];
    } else if (money[m] > cur) {
      cur = money[m];
    }
  }

  console.log(profit);
}
profile
안녕하세요 코린입니다!

0개의 댓글