알고리즘

자바 - 백준 16120 / PPAP

kdozlo 2024. 10. 16. 21:49

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

골드4

구현 방법

백준 9935 문자열 폭발 문제와 동일하다.

문자열 하나하나를 스택에 넣고 4개 이상이 들어오면 PPAP가 맞는지 확인하고 맞으면 P로 바꾸면 된다.

코드

import java.io.*;

/**
* 백준 16120
* PPAP
* 골드4
* https://www.acmicpc.net/problem/16120
*/
public class Boj16120 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();
        StringBuilder sb = new StringBuilder();

        for(char c : s.toCharArray()) {
            sb.append(c);
            int len = sb.length();

            if(len < 4)
                continue;

            if(isPpap(sb, len)) {
                sb.delete(len - 3, len);
            }
        }

        if(sb.toString().equals("P"))
            System.out.println("PPAP");
        else
            System.out.println("NP");
    }

    public static boolean isPpap(StringBuilder sb, int len) {

        if(sb.charAt(len - 1) != 'P')
            return false;
        if(sb.charAt(len - 2) != 'A')
            return false;
        if(sb.charAt(len - 3) != 'P')
            return false;
        if(sb.charAt(len - 4) != 'P')
            return false;

        return true;
    }
}

'알고리즘' 카테고리의 다른 글

자바 - 백준 2758 / 로또  (0) 2024.10.22
자바 - 백준 1106 / 호텔  (1) 2024.10.19
자바 - 백준 2015 / 수들의 합 4  (2) 2024.10.16
자바 - 백준 14938 / 서강그라운드  (0) 2024.10.11
자바 - 백준 1562 / 계단 수  (3) 2024.10.03