반응형
SMALL
문제 정보
문제명 - IOIOI
난이도 - 실버 I
문제 번호 - 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
문제
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
BaekJoon List
BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V - ● Bronze IV - ● Bronze III -..
han-hoon.tistory.com
기회는 준비된 자에게 찾아온다.

반응형
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 |
댓글