https://www.acmicpc.net/problem/16120
pseudo code
A를 처리하는게 핵심입니다.
stack = deque()
for i=1 to {len sentence} do
stack.append(sentence[i])
if sentence[i] == A then
A주변의 문자열을 조사해서 PPAP인지 확인한다
if PPAP then
stack에 있는 PPAP에서 P만 남긴다
else
break
if stack == 'P':
print("PPAP")
else:
pirnt('NP')
*제가 제출한 코드인데 장황하게 풀어서 다른 분의 코드까지 첨부합니다.
제가 제출한 코드입니다.
from collections import deque
stack = deque([])
sentence = input()
check = False
for i in range(len(sentence)):
stack.append(sentence[i])
if check and sentence[i] == 'P':
stack.pop()
stack.pop()
stack.pop()
check = False
elif check and sentence[i] == 'A':
break
else:
pass
if sentence[i] == 'A':
try:
if ''.join([stack[-3],stack[-2]]) == 'PP':
check = True
else:
pass
except:
pass
if ''.join(stack) == 'P':
print('PPAP')
else:
print("NP")
다른 분의 코드입니다.
w = input()
stack = []
ppap = ["P", "P", "A", "P"]
for i in range(len(w)):
stack.append(w[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")
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 1912번 : 연속합 (0) | 2022.06.30 |
---|---|
파이썬) 백준 알고리즘 | 11726번 : 2×n 타일링 (0) | 2022.06.30 |
파이썬) 백준 알고리즘 | 2670번 : 연속부분최대곱 (0) | 2022.06.28 |
파이썬) 백준 알고리즘 | 1254번 : 팰린드롬 만들기 (0) | 2022.04.04 |
파이썬) 백준 알고리즘 | 1769번 : 3의 배수 (0) | 2022.04.04 |
댓글