[백준] 16120: PPAP - JAVA

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

풀이

문자열을 앞에서부터 보면서 ‘PPAP’가 되면 ‘P’로 바꿔준다.

최종적으로 ‘P’가 되면 성공.

P가 들어오면 cnt를 1 늘려준다.

A가 들어올 때 cnt가 2보다 작다면 PPAP를 만들수 없으므로 실패.

cnt가 2이상이고, 다음 글자가 P라면 PPAP를 만들 수 있으므로, cnt를 1 줄여준다(P가 2개 빠지고 새로운 P가 들어오기 때문).


메모리: 20080KB

시간: 260ms

언어: Java 11

코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();

        boolean flag = true;
        int pCnt = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (ch == 'P') {
                pCnt++;
            } else {
                if (pCnt >= 2 && i < str.length() - 1 && str.charAt(i + 1) == 'P') {
                    pCnt--;
                    i++;
                } else {
                    flag = false;
                    break;
                }
            }
        }

        if (pCnt > 1) {
            flag = false;
        }

        System.out.println(flag ? "PPAP" : "NP");
    }

}