[BOJ][Java] 16120: PPAP

2025. 7. 13. 22:28·코딩 테스트 & 문제 해결/코딩 테스트 연습

알고리즘 정리

이 문제는 문자열 내 "PPAP" 패턴을 만나면 "P" 하나로 줄일 수 있다는 규칙에 따라,

입력 문자열이 "PPAP문자열" 인지 판단하는 문제이다.

 

문제 접근 방식

처음부터 문자열을 직접 PPAP → P 로 바꿔가는 건 문자열이 겹치거나 중첩되는 경우 복잡해진다.

따라서 문자열을 왼쪽부터 순차적으로 스택에 쌓으면서 스택의 마지막 4글자가 PPAP 이면 그것을 "P"로 축약하는 방식을 선택했다. 

 

주요 단계: 

 

  1. 문자열 입력 받기
  2. 한 글자씩 스택에 push
  3. 스택 마지막 4글자가 "PPAP"이면 → pop 4번 → push 'P'
  4. 반복
  5. 마지막에 스택이 'P' 하나라면 → "PPAP" 문자열, 아니라면 "NP"

 

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.next();
        Stack<Character> stk = new Stack<>();

        int len = input.length();
        for (int i = 0; i < len; i++) {
            char c = input.charAt(i);
            stk.push(c);

            if (stk.size() >= 4) {
                int sz = stk.size();
                if (stk.get(sz - 4) == 'P' &&
                    stk.get(sz - 3) == 'P' &&
                    stk.get(sz - 2) == 'A' &&
                    stk.get(sz - 1) == 'P') {

                    for (int j = 0; j < 4; j++) {
                        stk.pop();
                    }
                    stk.push('P');
                }
            }
        }

        if (stk.size() == 1 && stk.peek() == 'P') {
            System.out.println("PPAP");
        } else {
            System.out.println("NP");
        }
    }
}

 

'코딩 테스트 & 문제 해결 > 코딩 테스트 연습' 카테고리의 다른 글

[BOJ][Java] 11724: 연결 요소의 개수  (0) 2025.09.22
[BOJ] [python] 1764: 듣보잡 -해시 테이블과 시간복잡도  (0) 2025.03.23
[BOJ] [python] 14719: 빗물  (1) 2025.01.14
[BOJ] [python] 2504: 괄호의 값  (1) 2025.01.06
[BOJ] [python] 14888: 연산자 끼워넣기  (2) 2025.01.03
'코딩 테스트 & 문제 해결/코딩 테스트 연습' 카테고리의 다른 글
  • [BOJ][Java] 11724: 연결 요소의 개수
  • [BOJ] [python] 1764: 듣보잡 -해시 테이블과 시간복잡도
  • [BOJ] [python] 14719: 빗물
  • [BOJ] [python] 2504: 괄호의 값
JYUN_
JYUN_
예비 개발자 성장기록
  • JYUN_
    데브 스토리
    JYUN_
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • AWS & 클라우드 컴퓨팅 (1)
        • AWS (2)
      • AI & ML (2)
        • 딥러닝 (3)
        • 인공지능 기초 (2)
        • 자연어 처리 (3)
        • 컴퓨터 비전 (8)
      • CS 지식 (11)
        • 알고리즘 (2)
        • 자료구조 (4)
        • 지식확장 (2)
        • 컴퓨터 네트워크 (3)
      • 백엔드 (22)
        • Node.js (12)
        • Spring (9)
      • 웹 프론트엔드 (21)
        • HTML (3)
        • React (7)
        • 바닐라 JavaSctipt (11)
      • 코딩 테스트 & 문제 해결 (12)
        • 코딩 테스트 연습 (11)
        • 실전 문제 풀이 (1)
      • 트러블 슈팅 (1)
      • 기타 (5)
        • 개인 지식 관리 (1)
        • 외부 활동 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
JYUN_
[BOJ][Java] 16120: PPAP
상단으로

티스토리툴바