새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[백준] 16120 PPAP

by 언호 2022. 2. 6.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

PPAP 문자가 있으면 P 로 계속해서 변환을 해준다면 PPAP 문자인지 알 수 있습니다.

단순히 문자열에서 PPAP 가 발견되면 P 로 변환을 해주게 되면 시간초과가 발생 할 수 있다고 판단하여 스택과 큐를 이용하여 풀었습니다.

2) 알고리즘

  • 문자열

3) 풀이 코드

사용 언어 - Python

import sys
from collections import deque
sys.stdin = open('input.txt')

S = deque(sys.stdin.readline().rstrip())        # 입력 받은 문자
answer = []                                     # 한글자씩 쌓을 문자 리스트

while S:                                        # 입력 받은 문자가 아직 남아있으면 반복
    answer.append(S.popleft())                  # 가장 왼쪽 글자부터 순서대로 정답 리스트에 추가

    while len(answer) >= 4 and 'PPAP' == ''.join(answer[-4:]):      # 정답 리스트의 뒤에서부터 4글자가 PPAP 이면
        for _ in range(3):                                          # P로 변환되기 때문에 PAP 를 POP 시켜서 없앰
            answer.pop()

if ''.join(answer) == 'P':      # 정답 리스트에 P 만 남아있다면, 이 문자는 PPAP 문자이다
    print('PPAP')
else:
    print('NP')

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다.

2) 새롭게 학습한 내용

특별히 없습니다.


🔗 문제 링크

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

 

16120번: PPAP

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

www.acmicpc.net

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

'알고리즘 문제풀이 > Python' 카테고리의 다른 글

[백준] 16916 부분 문자열  (0) 2022.02.09
[프로그래머스] 순위 검색  (0) 2022.02.08
[백준] 1254 팰린드롬 만들기  (0) 2022.02.05
[백준] 4358 생태학  (0) 2022.02.04
[백준] 16398 행성 연결  (0) 2022.02.03

댓글