본문 바로가기
BaekJoon/Silver

[BOJ/JAVA] 백준 5525 : IOIOI (자바)

by HoonSikE 2022. 4. 14.
반응형
SMALL
문제 정보
  문제명   - IOIOI
  난이도   - 실버 I
문제 번호 - 5525번

문제 링크

BOJ_S1_5525_IOIOI

 

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


문제
N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다.

I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.

입력
첫째 줄N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄S가 주어진다.

출력
S에 PN이 몇 군데 포함되어 있는지 출력한다.

예제 입력/출력
예제 입력 예제 출력
1
13
OOIOIOIOIIOII
4
2
13
OOIOIOIOIIOII
2

알고리즘 분류
● 문자열

소스코드
package Lv2_Silver;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
 * @author HanHoon
 * @category 문자열
 * https://www.acmicpc.net/problem/5525
 */
public class BOJ_S1_5525_IOIOI {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// 문자열 규칙 Pn의 번호
		int N = Integer.parseInt(br.readLine());
		// S의 길이
		int M = Integer.parseInt(br.readLine());
		// 길이 M의 문자열
		String S = br.readLine();
		
		int result = 0;
		int count = 0;
		for (int i = 0; i < M-2; i++) {
			// IOI일 경우 count++;
			if(S.charAt(i) == 'I' && S.charAt(i+1) == 'O' && S.charAt(i+2) == 'I') {
				count++;
				// IOI가 N번 나오면 결국 Pn이 1번 포함된다.
				if(count == N) {
					result++;
					// IOI 1칸만 없애고 다음 비교
					count--;
				}
				// O에서 비교하면 count = 0이 되어버리므로 바로 다음 I를 비교할 수 있게 i++를 해준다.
				i++;
			}
			else
				count = 0;
		}
		System.out.println(result);
		br.close();
	}
}

 


BaekJoon List
 

BaekJoon List

BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V  - ● Bronze IV  - ● Bronze III  -..

han-hoon.tistory.com


  

기회는 준비된 자에게 찾아온다.

 


 

반응형
LIST

댓글