티스토리 뷰
728x90


문제 풀이 과정
문자열 일부분에 PPAP 가 있을 때 이 문자열을 P 로 치환을 하여 마지막에 문자열 P 하나만 남아 있다면 이 문자열은 PPAP 문자열이다.
처음에는 이 문제를 문자열을 배열로 변환한 뒤 스택을 이용하여 풀었더니 시간초과가 되었다.
문자열을 배열로 변환하지 않고 문자열의 인덱스를 이용하여 문제를 풀었더니 해결되었다.
문자열에서 P 가 나오면 P 의 갯수를 카운트를 해준다. 이것을 A 가 나올때까지 카운트 해준다.

A 가 나왔을 때 P 의 갯수가 2개 이상이며, 다음 문자열이 P 일때만 PPAP 문자열이 되므로, P 의 수를 한개 줄여주고 문자열의 인덱스를 증가시킨다.
여기서 P 의 갯수를 한개 줄이는 PPAP 는 다시 P 로 치환되기때문에 다시 P 가 추가 된다. 결국 -2 + 1 = - 1 이 된다.

문제 해결할때 도움이 되었던 반례이다.
전체 코드
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
public class Main { | |
public static void main(String[] args) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
String str = br.readLine(); | |
int pCnt = 0; | |
boolean check = true; | |
for (int i = 0; i < str.length(); i++) { | |
char cur = str.charAt(i); | |
if(cur == 'P'){ | |
pCnt++; | |
} | |
else if(cur == 'A' && pCnt >= 2){ | |
if(i < str.length() - 1 && str.charAt(i + 1) == 'P'){ | |
pCnt--; | |
i++; | |
} | |
} | |
else{ | |
check = false; | |
break; | |
} | |
} | |
if(pCnt == 1 && check){ | |
System.out.println("PPAP"); | |
} | |
else{ | |
System.out.println("NP"); | |
} | |
} | |
} |

728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
백준 1202번 - 보석 도둑 (0) | 2023.01.20 |
---|---|
백준 11404번 - 플로이드 (JAVA) (0) | 2023.01.19 |
백준 1915번 - 가장 큰 정사각형 (JAVA) (0) | 2023.01.17 |
백준 1484번 - 다이어트 (JAVA) (0) | 2023.01.17 |
백준 2437번 - 저울 (JAVA) (0) | 2023.01.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 기술 면접 준비
- 개발자 면접 준비
- 알고리즘
- 코딩테스트 공부
- 알고리즘 공부
- 취업 준비
- 백엔드 개발자 취업 준비
- 백엔드 개발자
- 프로그래머스 카카오
- 알고리즘공부
- 개발자 취업 준비
- 코테준비
- 제로베이스 백엔드 스쿨
- 코딩테스트 준비
- 프로그래머스 자바
- 코테 준비
- 주니어 개발자 취업 준비
- 코테공부
- 백엔드 개발자 기술 면접 준비
- 취업준비
- 자바공부
- 제로베이스 백준 장학금
- 백준
- 취준
- 프로그래머스
- java
- 코딩테스트
- 자바
- 코딩테스트공부
- 개발자 취준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함