[Python] BOJ 16120 - PPAP

728x90
반응형

https://www.acmicpc.net/problem/16120

 

16120번: PPAP

첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다.

www.acmicpc.net

# 스택문제이다.

https://www.acmicpc.net/problem/9935

BOJ 9935번: 문자열 폭발과 같은 알고리즘으로 풀면된다.

 

# 문자열 s를 입력받고 s의 첫문자부터 stack에 넣는다. 넣는 과정에서 stack[-1]이 'P'이고

   현재 스택의 마지막 4개의 원소가 'PPAP'이면 del stack[-4: ]를 통해 'PPAP'를 날려주고

   'P'를 stack에 넣어주는 것을 반복한다.

 

# 모든 과정이 끝난뒤 stack에 'PPAP'가 남아있거나, 'P'가 남아있으면 'PPAP'를 출력하고

   아니면 'NP'를 출력한다.

 

s = input()
stack = []
for i in range(len(s)):
	stack.append(s[i])
	if stack[-1] == 'P' and stack[-4: ] == list('PPAP'):
		del stack[-4: ]
		stack.append('P')

if stack == list('PPAP') or stack == list('P'):
	print('PPAP')
else:
	print('NP')

(solved.ac 티어: 골드 4)

728x90
반응형
TAGS.

Comments