[BOJ 16120] PPAP(Python)

박현우·2021년 6월 20일
0

BOJ

목록 보기
78/87

문제

PPAP


문제 해설

주어진 문자열을 검사해 "PPAP"가 연속적으로 나오면 "P"로 줄이는 문제입니다.

먼저 PPAP가 있는지부터 판단해야하기 때문에 스택을 이용해 주어진 문자열을 처음부터 끝까지 삽입합니다.

삽입하면서 스택의 마지막 부분을 계속 확인하는데, 마지막 부분이 PPAP면 스택을 4번 pop해주고 P를 푸쉬합니다.

이렇게되면 PPAP문자열일 경우 마지막엔 반드시 P가 남습니다. 또한, P만 주어지는 문자열도 PPAP문자열이기 때문에 마지막에 스택에 어떤 값이 들어있는지 확인하면 됩니다.


풀이 코드

import sys

input = sys.stdin.readline
ppap = ["P", "P", "A", "P"]
stack = []
string = input().rstrip()
for i in range(len(string)):
    # 문자열 하나 추가
    stack.append(string[i])
    while len(stack) >= 4 and stack[-4:] == ppap:
        for _ in range(4):
            stack.pop()
        stack.append("P")
print("PPAP") if stack == ["P"] else print("NP")

0개의 댓글