16120번: PPAP
문제 )
![](https://blog.kakaocdn.net/dn/bSL6Wv/btrueeiNdyR/Jp2iSRtt3mELfkry13Cq0K/img.png)
bryan은 PPAP를 좋아한다. bryan은 어떻게 하면 사람들에게 PPAP를 전파할 수 있을까 고민하던 중 PPAP 문자열이라는 것을 고안하게 되었다.
PPAP 문자열은 문자열 P에서 시작하여, 문자열 내의 P를 PPAP로 바꾸는 과정을 반복하여 만들 수 있는 문자열로 정의된다. 정확하게는 다음과 같이 정의된다.
- P는 PPAP 문자열이다.
- PPAP 문자열에서 P 하나를 PPAP로 바꾼 문자열은 PPAP 문자열이다.
예를 들어 PPAP는 PPAP 문자열이다. 또한, PPAP의 두 번째 P를 PPAP로 바꾼 PPPAPAP 역시 PPAP 문자열이다.
문자열이 주어졌을 때, 이 문자열이 PPAP 문자열인지 아닌지를 알려주는 프로그램을 작성하여라.
입력 :
첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다.
출력 :
첫 번째 줄에 주어진 문자열이 PPAP 문자열이면 PPAP를, 아닌 경우 NP를 출력한다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
p = input()
stack = []
if p == "P": # P는 PPAP 문자열이다.!
print("PPAP")
else:
for i in range(len(p)):
stack.append(p[i])
if stack[len(stack)-4:] == ['P', 'P', 'A', 'P']:
stack.pop()
stack.pop()
stack.pop()
stack.pop()
if i != len(p) - 1:
stack.append('P')
if stack:
print("NP")
else:
print("PPAP")
|
cs |
출처 : https://www.acmicpc.net/problem/16120
16120번: PPAP
첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다.
www.acmicpc.net
'Develop > 백준 (python)' 카테고리의 다른 글
[백준] 15649번: N과 M (1) (python) (0) | 2022.02.26 |
---|---|
[백준] 2529번: 부등호 (python) (0) | 2022.02.25 |
[백준] 1918번: 후위 표기식 (python) (0) | 2022.02.25 |
[백준] 2606번: 바이러스 (python) (0) | 2022.02.24 |
[백준] 15489번: 파스칼 삼각형 (python) (0) | 2022.02.23 |