<답안>
#include <iostream>
using namespace std;
int main()
{
int Pcount = 0;
string input;
cin>>input;
for(int i=0; i<input.size(); i++)
{
if(input[i] == 'P')
{
Pcount++;
}
else if(input[i] == 'A')
{
if(Pcount >= 2 && input[i+1] == 'P')
{
Pcount--;
i++;
}
else
{
cout << "NP"<<"\n";
return 0;
}
}
else
{
cout << "NP"<<"\n";
return 0;
}
}
if(Pcount == 1)
cout<<"PPAP"<<"\n";
else
cout<<"NP"<<"\n";
return 0;
}
<설명>
쉽사리 접근이 안되어 블로그를 참고하여 힌트를 얻었었다.. 키포인트는"P"의 누적개수였다
"P"일때 Pcount를 계속 증가시키다가 "A"가 입력된 경우
Pcount가 2이상 (2여야만 하진 않는다는점 주의!) 이고, 뒷글자 input[i+1]이 "P" 인 경우
다시말해 "A" 기준으로 앞에 "PP"가 있고, 뒤에 "P"가 있는경우
-> 누적된 Pcount를 1 감소시키고 (PP 까지 2인 상태에서 PPAP를 P 하나로 취급해야하기 때문에 2 -> 1로 -1 해야한다)
뒷글자 P를 확인하였기 때문에 i를 1 증가시켜준다
이렇게 글자 확인이 끝난 후 P의 개수 Pcount가 1이여야만 한다 (PPAP의 마지막 P = 1) 그러면 PPAP를 출력한다
그 외의 경우는 NP를 출력한다
'백준 > Inha Algorithm Study Group' 카테고리의 다른 글
DAY4 중급 - 백준 10819번 (C++) (0) | 2020.09.05 |
---|---|
DAY4 초급 - 백준 17262번 (C++) (0) | 2020.09.05 |
DAY3 중급 - 백준 17287번 (C++) (0) | 2020.09.04 |
DAY3 초급 - 백준 2828번 (C++) (0) | 2020.09.04 |
DAY2 고급 - 백준 13022번 (C++) (0) | 2020.09.04 |