[백준] 5525번 IOIOI (JAVA, 문자열)

728x90
반응형

www.acmicpc.net/problem/5525

 

5525번: IOIOI

첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. (1 ≤ N ≤ 1,000,000, 2N+1 ≤ M ≤ 1,000,000)

www.acmicpc.net

import java.util.Scanner;

public class Main {
	static int n,m;
	static String s;
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		n=sc.nextInt();
		m=sc.nextInt();//s의 길이
		s=sc.next();
		StringBuilder sb=new StringBuilder();
		for (int i = 0; i < 2*n+1; i++) {//n일 때 기준 문자열의 길이
			if(i%2==0) {
				sb.append("I");
			}else {
				sb.append("O");
			}
		}
		
		
		String base=sb.toString();
		int answer=0;
		int len=0;
		for (int i = 0; i < s.length(); i++) {
			
			if(s.charAt(i)==base.charAt(len)) {
				len+=1;
			}else {//다른 문자가 나왔음
				if(s.charAt(i)=='I') {
					len=1;
				}else {
					len=0;
				}
			}
			if(len==2*n+1) {
				answer+=1;
				len-=2;//IOIOI에서 제일앞의 I대신 가운데 I가 시작지점이된다.
				
			}
		}
		System.out.println(answer);
	}
}
728x90
반응형
TAGS.

Comments