[javascript] 백준 1874번 스택 수열

bjyyyyy·2022년 11월 7일
0

문제보기

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

const n = input.shift();
const wanted = input.map((item) => +item);
const material = [];
const stack = [];
let result = [];
for (let i = 1; i <= n; i++) {
    material.push(i);
}

let pointer = 0;
for (let i = 0; i < material.length; i++) {
    stack.push(material[i]);
    result.push("+");
    while (
        stack[stack.length - 1] && // undefined가 나올 수 있어서 확인
        stack[stack.length - 1] === wanted[pointer]
    ) {
        stack.pop();
        result.push("-");
        pointer++;
    }
}

if (stack.length) {
    console.log("NO");
    return;
}
console.log(result.join("\n"));

n개의 숫자를 오름차순으로한 배열이 있으면 그 배열을 stack을 이용하여 입력에 있는 순서로 만들 수 있는지 확인하는 문제이다.
오름차순으로 만든 배열은 material이며 해당 배열을 기준으로 반복문을 실행하여
stack에 순서대로 push 해주고 push 할때마다 요구하는 수열을 만들 수 있는지 while 반복문을 통해 확인했다

이 문제를 처음에 이해하는데 너무 많은 시간이 걸렸다.
문제의 독해력을 길러야겠다고 느꼈다.

0개의 댓글