[백준] 17298 오큰수 - javascript
📌 문제
https://www.acmicpc.net/problem/17298
📌 풀이
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
let n = Number(input[0]);
let arr = new Array(n);
arr = input[1].split(" ").map(Number);
let ans = new Array(n);
let stack = [];
for (let i = n - 1; i >= 0; i--) {
while (stack.length !== 0) {
let v = stack.pop();
if (v > arr[i]) {
ans[i] = v;
stack.push(v);
stack.push(arr[i]);
break;
}
}
if (stack.length === 0) {
ans[i] = -1;
stack.push(arr[i]);
}
}
console.log(ans.join(" "));
✔ 알고리즘 : 스택
✔ 배열의 뒤에서 부터 스택에 집어넣는다
✔ stack에 아무것도 없으면 ans에 -1 저장후 push
✔ stack의 top이랑 비교해서 큰값을 찾을때까지 pop 하여 ans에 v저장
✔ 큰것을 찾으면 push v 후 push arr[i]
✔ 난이도 : 백준 기준 골드 4
Author And Source
이 문제에 관하여([백준] 17298 오큰수 - javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ywc8851/백준-17298-오큰수-javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)