Problem : PPAP
유형 : 스택
문제 해석
- 주어진 문자열이
PPAP
문자열 인지 확인하라
문제 재해석
PPAP
문자열 내 3개의 문자 P를 PPAP로 치환 시킨 것은 PPAP 문자열이다.- 치환 시킨 것을 또 치환 시켜도 된다.
해결 전략
- 문자열 길이가
100만
이다. nlogn 이하로 해결 해야 한다. PPAP
를 찾기 위해 전부를 매번 탐색할경우 복잡도가n^2
이 된다.- 순차적으로 탐색 하다가
PPAP
가 등장한 경우P
로 치환 시켜준다. - 스택의 괄호쌍 문제들과 똑같은 방식으로 해결할 수 있다
설계 구현
- 스택을 이용하여 문자열을 쌓아 올려 가본다.
- 스택 내에서
PPAP
가 완성된 경우P
로 치환한다.
주의할 점
P
는 PPAP 문자열이다.PP
는 NP 이다.PPPAPPAPAP
는 PPAP 문자열을 두번 변화 시킨 PPAP 문자열이다.
코드
1 |
|
피드백
- 문제 이해가 제대로 안되어서 백준내 게시판을 보고 겨우 이해했다.
- 문제 해결력도 중요하지만,
문제 이해력
도 키워야 할 것 같다. greedy
로도 분류가 되어있는데..- 최선을 택하니까 그런것인가?
- 그러면 거의 모든 괄호쌍 문제들도
greedy
로 택해야 하는것이 아닌가? 헷갈린다.