728x90

https://www.acmicpc.net/problem/5525

 

5525번: IOIOI

N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇

www.acmicpc.net

 

 

 

풀이)

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main_BJ_5525_IOIOI {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int s = Integer.parseInt(br.readLine());
        String str = br.readLine();
        char[] arr = str.toCharArray();
        int ans = 0;
        int cnt = 0;

        for(int i=1; i<s-1; i++){
            if(arr[i-1] == 'I' && arr[i]=='O' && arr[i+1] == 'I'){
                cnt++;

                if(cnt == n){
                    cnt--;
                    ans++;
                }

                i++;
            }
            else
                cnt = 0;
        }

        System.out.println(ans);
    }//main
}

슬라이딩 윈도우로 풀려고 하다가 실패한 문제였다. 사실 슬라이딩 윈도우로 풀기에도 어려운 문제긴 했다.

 

1. IOI가 반복되므로 한칸씩 이동하면서 본다. 일치한다면, i를 한 번 더 추가하여 2번 이동하게 만든다!

2. IOI가 반복되는 개수를 세고, 이것이 n이 된다면 정답+1 후 탈출!(O의 개수가 n과 같다는 것과 동일)

3. 다르다면 반복되는 개수는 0으로 돌아간다.

 

 

참고한 블로그)

https://velog.io/@lifeisbeautiful/Java-%EB%B0%B1%EC%A4%80-5525%EB%B2%88-IOIOI-with-%EC%9E%90%EB%B0%94

 

[Java] 백준 5525번 IOIOI with 자바

[Java] 백준 5525번 IOIOI with 자바

velog.io

 

추가적으로 보면 좋은 블로그)

https://girawhale.tistory.com/11

 

[백준] 5525번: IOIOI - JAVA

🔗 문제 링크 BOJ 5525번: IOIOI 5525번: IOIOI 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000) www.acmicpc.net 📝 풀이 과정 문

girawhale.tistory.com

 

728x90

+ Recent posts