https://www.acmicpc.net/problem/16120
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
let str = input[0];
let stack = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === "P") {
if (
stack.length > 2 &&
stack[stack.length - 1] === "A" &&
stack[stack.length - 2] === "P" &&
stack[stack.length - 3] === "P"
) {
stack.pop();
stack.pop();
stack.pop();
}
stack.push("P");
} else {
stack.push(str[i]);
}
}
if (stack.length === 1 && stack[stack.length - 1] === "P") console.log("PPAP");
else console.log("NP");
✔ 알고리즘 : 스택
✔ 문자열을 스택에 입력받고 P를 입력받았을 때 현재의 P가 PPAP의 마지막 P인지 확인하고 마지막 P이면 PPAP를 P로 바꾸어 스택에 넣어준다
✔ 마지막 스택의 원소수가 1이고 그 원소가 P인 경우 PPAP문자열이다
✔ 난이도 : 백준 기준 골드4