[C++] 백준 16120번: PPAP

be_clever·2022년 5월 3일
1

Baekjoon Online Judge

목록 보기
143/172

문제 링크

16120번: PPAP

문제 요약

문자열 P에서 시작해서 문자열 내의 어떠한 P를 PPAP로 반복적으로 바꿔서 만들 수 있는 문자열을 PPAP 문자열이라고 한다. 어떠한 문자열이 주어지면 이 문자열이 PPAP 문자열인지 판별해야 한다.

접근 방법

문자열을 입력 받은 뒤에, 각 문자를 순서대로 하나씩 새로운 문자열에 넣어줍니다. 이 새로운 문자열의 마지막 4개의 문자로 이루어진 부분 문자열이 "PPAP"라면 이 부분 문자열이 "PPAP"가 아닐 때까지 반복적으로 P로 대치해줍니다. 입력 받은 문자열이 PPAP 문자열이라면, 마지막에는 P만 남게 됩니다.

코드

#include <bits/stdc++.h>

using namespace std;

int main(void) {
	string str, ppap;
	cin >> str;

	for (auto& i : str) {
		ppap.push_back(i);

		if (ppap.size() < 4)
			continue;

		while (ppap.size() >= 4 && ppap.substr(ppap.size() - 4, 4) == "PPAP") {
			for (int j = 0; j < 4; j++)
				ppap.pop_back();
			ppap.push_back('P');
		}
	}

	cout << (ppap == "P" ? "PPAP" : "NP") << '\n';
	return 0;
}
profile
똑똑해지고 싶어요

0개의 댓글