알고리즘/BOJ

백준 16120번 PPAP

꾸준함. 2019. 10. 22. 11:28

문제 링크입니다: https://www.acmicpc.net/problem/16120

 

16120번: PPAP

첫 번째 줄에 문자열이 주어진다. 문자열은 대문자 알파벳 P와 A로만 이루어져 있으며, 문자열의 길이는 1 이상 1,000,000 이하이다.

www.acmicpc.net

문자열의 길이가 최대 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