반응형
SMALL
문제 정보
문제명 - IOIOI
난이도 - 실버 I
문제 번호 - 5525번
문제 링크
문제
N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다.
I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다.
출력
S에 PN이 몇 군데 포함되어 있는지 출력한다.
예제 입력/출력
예제 입력 예제 출력 1
13
OOIOIOIOIIOII4 2
13
OOIOIOIOIIOII2
알고리즘 분류
● 문자열
소스코드
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
기회는 준비된 자에게 찾아온다.
반응형
LIST
'BaekJoon > Silver' 카테고리의 다른 글
[BOJ/JAVA] 백준 11399 : ATM (자바) (0) | 2022.04.14 |
---|---|
[BOJ/JAVA] 백준 10974 : 모든 순열 (자바) (0) | 2022.04.14 |
[BOJ/JAVA] 백준 4963 : 섬의 개수 (자바) (0) | 2022.04.14 |
[BOJ/JAVA] 백준 9205 : 맥주 마시면서 걸어가기 (자바) (0) | 2022.04.14 |
[BOJ/JAVA] 백준 16926 : 배열 돌리기 1 (자바) (0) | 2022.04.13 |
댓글