문제링크
문제풀이
문제풀이는 다음 블로그 글을 참고하였다.
https://jjangsungwon.tistory.com/44
이분의 아이디어를 사용했고, 나의 로직과 조금 다른점은
- tower 배열에 unshift(0)를 해주어서 index가 동일해지도록 하였다.
추가로 배열을 int형으로 변환하지 않아서 비교연산시 내가 원하는 대소관계가 성립하지 않았다.
그래서 시간을 많이잡아먹었다. 나는 왜 바보
const fs = require("fs");
BOJkey = true;
let input = fs
.readFileSync(BOJkey ? "./자바스크립트로/2493/input.txt" : "./dev/stdin")
.toString()
.trim()
.split("\n");
let num = input[0];
let tower = input[1].split(" ");
tower = tower.map((v) => +v);
let stack = [];
let result = [];
// tower 배열에 unshift(0)를 해주어서 index가 동일해지도록 하였다.
tower.unshift(0);
// console.log(tower);
for (let i = 1; i <= num; i++) {
if (stack.length == 0) {
stack.push([i, tower[i]]);
} else if (stack[stack.length - 1][1] < tower[i]) {
while (stack.length > 0 && stack[stack.length - 1][1] < tower[i]) {
stack.pop();
}
stack.push([i, tower[i]]);
} else {
stack.push([i, tower[i]]);
}
if (stack.length == 1) result.push(0);
else result.push(stack[stack.length - 2][0]);
}
console.log(result.join(" "));
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
[백준/JS] 1620 나는야 포켓몬 마스터 이다솜 (0) | 2022.07.01 |
---|---|
[백준/JS] 1918 후위표기식 (0) | 2022.07.01 |
[백준/JS] 2800 괄호제거 (0) | 2022.06.30 |
[백준/Python] 2346 풍선 터뜨리기 (0) | 2022.06.30 |
자바스크립트 in 연산자 (0) | 2022.06.30 |