문제: PPAP
분류: 자료 구조, 문자열, 스택
난이도: 골드4
스택을 활용하여 풀이했다.
주어진 문자열의 문자를 순차적으로 탐색하며 아래를 수행한다.
탐색이 끝난 후 스택에 ”P” 하나만 남아있다면 이는 “PPAP” 문자열을 “P”로 치환한 것이므로 주어진 문자열이 PPAP 문자열이라는 뜻이다. 따라서 “PPAP”를 출력한다.
그렇지 않다면 “NP”를 출력한다.
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
const ppap = fs.readFileSync(filePath).toString().trim();
const solution = (ppap) => {
let stack = [];
let top = -1;
for (let i = 0; i < ppap.length; i++) {
if (ppap.substring(i, i + 2) === "AP") {
if (top > 0 && stack[top] === "P" && stack[top - 1] === "P") {
stack.pop();
top--;
i++;
} else {
return false;
}
} else {
stack.push(ppap[i]);
top++;
}
}
if (top === 0 && stack[top] === "P") return true;
return false;
};
console.log(solution(ppap) ? "PPAP" : "NP");