🔒Algorithm
백준[JS] > 11501번 주식
devWarrior
2024. 11. 4. 20:53
링크
https://www.acmicpc.net/problem/11501
문제풀이
1. 메모리 초과로 실패한 코드
-> 굳이 새로운 배열(refArr) 을 만들고 2번의 순회를 할 필요가 없었다.
const fs = require("fs");
const input = fs
.readFileSync("/dev/stdin")
.toString()
.split("\n")
.map((str) => {
return str.split(" ").map((n) => Number(n));
});
for (let i = 1; i < input.length; ++i) {
if (input[i].length > 1) {
let benefit = 0;
let prices = input[i];
let max = 0;
let refArr = [];
for (let j = prices.length - 1; j >= 0; --j) {
max = Math.max(max, prices[j]);
refArr.push(max);
}
for (let z = 0; z <= prices.length - 1; ++z) {
let price = prices[z];
if (price < refArr[prices.length - 1 - z]) {
benefit = benefit + refArr[prices.length - 1 - z] - price;
}
}
console.log(benefit);
}
}
2.성공한 코드
const fs = require("fs");
const input = fs
.readFileSync("/dev/stdin")
.toString()
.split("\n")
.map((str) => {
return str.split(" ").map((n) => Number(n));
});
for (let i = 1; i < input.length; ++i) {
if (input[i].length > 1) {
let benefit = 0;
let prices = input[i];
let max = 0;
for (let j = prices.length - 1; j >= 0; --j) {
max = Math.max(max, prices[j]);
if (max > prices[j]) {
benefit = benefit + max - prices[j];
}
}
console.log(benefit);
}
}