https://www.acmicpc.net/problem/16120
16120번: PPAP
첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다.
www.acmicpc.net
처음에 리스트 말고 collections의 deque를 사용해서 문제를 풀려고 했는데 리스트와는 다르게 deque에서는 슬라이싱하는 방법을 찾지 못해서 다시 리스트로 풀게 되었다.
간단하게 입력받은 문자를 슬라이싱해서 하나씩 스택에 넣어주면서 스택에 4개이상 쌓였을 때, 4개를 빼고 해당 문자가 PPAP이면 P를 다시 스택에 넣어주고 마지막에 스택에 남은 문자가 P이거나 P P A P가 남아있으면 PPAP 문자열이고 나머지 문자는 전부 NP 이다.
from sys import stdin as s
s = open('input.txt','rt')
#arr = list(s.readline().rstrip())
arr = list(map(str, s.readline().rstrip()))
print(arr)
ppap = []
for i in range(len(arr)):
ppap.append(arr[i])
if ppap[-4:] == ["P","P","A","P"]:
for _ in range(4):
ppap.pop()
ppap.append("P")
if ppap == ["P"] or ppap==["P","P","A","P"]:
print("PPAP")
else:
print("NP")