문제 링크입니다: https://www.acmicpc.net/problem/16120
문자열의 길이가 최대 1,000,000이기 때문에 O(N)으로 풀어야하는 문제였습니다.
알고리즘은 아래와 같습니다.
* cnt는 'P'가 연속해서 나오는 횟수
1. 현재 인덱스가 'P'라면 cnt를 증가시킵니다.
2. 현재 인덱스가 'A'라면
2-1. 앞에 연속해서 P가 2개 이상 나왔고 바로 뒤에 문자가 P라면 PPAP 조건 성립하므로 해당 PPAP 문자열을 P로 치환 따라서 cnt를 하나 감소시킵니다.
2-2. 2-1을 성립하지 않을 경우 NP 출력 후 프로그램 종료
3. 문자열을 쭉 탐색한 뒤 마지막 P가 연속해서 한번 등장하면 바로 앞에가 A이므로 PPAP 문자열 성립
3-1. 3번 성립하지 않을 경우 NP 출력
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 15656번 N과 M (7) (2) | 2019.10.22 |
---|---|
백준 10867번 중복 빼고 정렬하기 (0) | 2019.10.22 |
백준 2012번 등수 매기기 (0) | 2019.10.22 |
백준 2457번 공주님의 정원 (0) | 2019.10.22 |
백준 3036번 링 (0) | 2019.10.21 |