728x90
BOJ 16120 PPAP
문제
bryan은 PPAP를 좋아한다.
bryan은 어떻게 하면 사람들에게 PPAP를 전파할 수 있을까 고민하던 중 PPAP 문자열이라는 것을 고안하게 되었다.
PPAP 문자열은 문자열 P에서 시작하여, 문자열 내의 P를 PPAP로 바꾸는 과정을 반복하여 만들 수 있는 문자열로 정의된다.
정확하게는 다음과 같이 정의된다.
P는 PPAP 문자열이다.
PPAP 문자열에서 P 하나를 PPAP로 바꾼 문자열은 PPAP 문자열이다.
예를 들어 PPAP는 PPAP 문자열이다.
또한, PPAP의 두 번째 P를 PPAP로 바꾼 PPPAPAP 역시 PPAP 문자열이다.
문자열이 주어졌을 때, 이 문자열이 PPAP 문자열인지 아닌지를 알려주는 프로그램을 작성하여라.
시간 제한 : 1 초
메모리 제한 : 512 MB
입력
첫 번째 줄에 문자열이 주어진다.
문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다.
출력
첫 번째 줄에 주어진 문자열이 PPAP 문자열이면 PPAP를, 아닌 경우 NP를 출력한다.
예제 입력 1
PPPAPAP
예제 출력 1
PPAP
예제 입력 2
PPAPAPP
예제 출력 2
NP
풀이
# boj 16120 PPAP
s = input()
stack = []
ppap = ["P", "P", "A", "P"]
for i in range(len(s)):
stack.append(s[i])
if stack[-4:] == ppap:
for _ in range(4):
stack.pop()
stack.append("P")
if stack == ppap or stack == ["P"]:
print("PPAP")
else:
print("NP")
728x90
'Algorithm(Python) > 스택' 카테고리의 다른 글
[Algorithm] 백준 BOJ 1662 압축(python 파이썬) (0) | 2023.02.23 |
---|---|
[Algorithm] 백준 BOJ 2841 외계인의 기타 연주(python 파이썬) (0) | 2022.10.26 |
[Algorithm] 백준 BOJ 5397 키로거(python 파이썬) (0) | 2022.10.25 |
[Algorithm] 백준 BOJ 2504 괄호의 값(python 파이썬) (0) | 2022.10.24 |
[Algorithm] 백준 BOJ 4889 안정적인 문자열(python 파이썬) (0) | 2022.10.23 |