링크
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);
}
}
'알고리즘' 카테고리의 다른 글
백준[JS] > 1063번 킹 (0) | 2024.11.08 |
---|---|
백준[JS] > 1449번 수리공 항승 (0) | 2024.11.04 |
백준[JS] > 11000번 강의실 배정 (0) | 2024.11.04 |
백준[JS] > 1092번 배 (0) | 2024.11.02 |
백준[JS] > 1058번 친구 (0) | 2024.10.31 |