백준 Gold 4 PPAP
PPAP (백준 Gold 4)
https://www.acmicpc.net/problem/16120
주어지는 문자열이 PPAP 문자열인지를 찾는 문제
-
- PPAP 문자열
- PPAP를 P로 바꾸는 과정을 반복하였을때
주어진 문자열이 PPAP이 된다면 PPAP 문자열이다
- PPAP 문자열
풀이 방법
주어진 문자열을
비교형 문자열에 ‘하나씩’ 쌓아가며
가장 최근 4개의 문자열이 PPAP인지를 확인한다
-
아니라면 다음 문자로 넘어감
-
맞다면 해당 부분을 P 하나로 교체해준다
-
최종적으로 PPAP 자체도 P로 바뀌므로
마지막에 남은 문자열이 P인지 확인다
제출 코드
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const string ppap = "PPAP";
int main()
{
string str;
cin >> str;
string comp = "";
for (char c : str)
{
comp.push_back(c);
if (comp.size() < 4)
{
continue;
}
int idx = 0;
bool isRight = true;
for (int i = 3; i >= 0; i--)
{
if (comp[comp.size() - 1 - idx] != ppap[i])
{
isRight = false;
break;
}
idx++;
}
if (isRight)
{
for (int i = 0; i < 4; i++)
comp.pop_back();
comp.push_back('P');
}
}
if (comp == "P")
cout << ppap;
else
cout << "NP";
return 0;
}
결과
temp string을 선언하여 비교할까 싶다가
(temp(comp.end() - 4, comp.end()))
(temp == ppap?)
해당 방식을 쓰느니 그냥 comp의 뒤쪽 4개를 비교하는 편이
더 괜찮아보여 그냥 비교하는 쪽을 선택하였다
댓글남기기