728x90
반응형
https://www.acmicpc.net/problem/16120
문제
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를 출력한다.
풀이
Code
import sys
input = sys.stdin.readline
string = input().rstrip()
# 1. 스택 리스트 생성
stack = []
# 2. 문자열의 한 글자씩 스택에 삽입
for s in string :
stack.append(s)
# 3. 마지막 4글자가 'PPAP'일 경우 앞의 한 글자만 남겨두고 삭제
if ''.join(stack[-4:]) == 'PPAP' :
for _ in range(3) : stack.pop()
# 4. 마지막 남은 글자가 P일 경우 PPAP 출력, 이외의 경우 NP 출력
print('PPAP') if ''.join(stack) == 'P' else print('NP')
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python/BOJ] 1713. 후보 추천하기 (0) | 2023.07.15 |
---|---|
[Python/BOJ] 20207. 달력 (0) | 2023.07.15 |
[Python/BOJ] 2212. 센서 (0) | 2023.07.08 |
[Python/BOJ] 9251. LCS (0) | 2023.06.30 |
[Python/BOJ] 1461. 도서관 (0) | 2023.06.26 |