[백준] 15881번 Pen Pineapple Apple Pen Java 문제 풀이

2022. 1. 17. 18:20알고리즘/백준

728x90
반응형

문제

여러 개의 사과, 파인애플, 그리고 펜이 일렬로 세워져 있다. 이 물건들의 순서를 바꾸지 않고 옆에 있는 물건끼리 연결했을 때, 펜-파인애플-애플-펜을 몇 개나 만들 수 있을지 세어보자.

단, 펜, 파인애플, 사과, 펜 순서로 연결된 네 개의 물건만을 펜-파인애플-애플-펜으로 인정하며, 하나의 펜이 두 개의 펜-파인애플-애플-펜에 포함될 수 없다. 또한 펜, 사과, 파인애플, 펜 순서로 연결된 네 개의 물건은 펜-파인애플-애플-펜이 아니다.

입력

첫 번째 줄에 물건의 총 개수 n이 주어진다. (1 ≤ n ≤ 1,000,000)

두 번째 줄에 물체의 목록이 길이 n의 문자열로 주어진다. 사과는 A로, 파인애플은 P로, 펜은 p로 대소문자를 구분하여 표기한다.

출력

만들 수 있는 펜-파인애플-애플-펜의 최대 개수를 출력한다.


예제입력1

15
ApPApPpAPpApPAp

예제출력1

2


예제입력2

7
pPApPAp

예제출력2

1


문제풀이

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;

interface Main{
    static void main(String[]a) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int count = 0;
        String str = "";
        str = br.readLine();
        str = br.readLine();
        String regex = "pPAp";
        Pattern pattern = Pattern.compile(regex);        
        Matcher matcher = pattern.matcher(str);
        while(matcher.find()) {
          count++;
        }
        bw.write(count+"");
        bw.flush();
    }
}

pPAp라는 단어가 포함된 개수만 세면 됩니다.

 

matcher.find()를 파라미터 없이 사용하면 패턴과 일치하는 문자를 찾은 후, 그다음부터 문자를 찾기 때문에

pPApPAp 같은 겹치는 단어들은 자동으로 뛰어넘게 됩니다.

 

찾은 문자만큼 count 값을 증가시켜줍니다.

 

BufferedWriter.write는 String 값만 출력 가능합니다.

 

출처 : https://www.acmicpc.net/problem/15881

 

15881번: Pen Pineapple Apple Pen

여러 개의 사과, 파인애플, 그리고 펜이 일렬로 세워져 있다. 이 물건들의 순서를 바꾸지 않고 옆에 있는 물건끼리 연결했을 때, 펜-파인애플-애플-펜을 몇 개나 만들 수 있을지 세어보자. 단, 펜,

www.acmicpc.net

 

728x90
반응형