728x90
문제
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이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다.
출력
S에 PN이 몇 군데 포함되어 있는지 출력한다.
풀이
반복되는 문자의 형태는 I+OI*n 개로 정의내릴 수 있다.
처음 시작하는 I의 위치를 찾고 OI가 몇번 반복되는지를 확인하고, 반복된 OI의 갯수로 몇 번의 n의 길이만큼 반복할 수 있는지를 찾는다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine()), m = Integer.parseInt(br.readLine()), cnt=0;;
String str = br.readLine();
for(int i=0;i<=m-(1+2*n);i++) {
if(str.charAt(i)=='I') {
int streak=0;
for(int j=i+1;j<m-1;j+=2) {
if(str.charAt(j)=='O' && str.charAt(j+1)=='I') {
streak++;
i=j-1;
}
else
break;
}
if(streak>=n)
cnt+=streak-n+1;
}
}
System.out.println(cnt);
}
}
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 17265 나의 인생에는 수학과 함께 JAVA (0) | 2022.03.10 |
---|---|
Baekjoon 1926 그림 JAVA (0) | 2022.03.10 |
Baekjoon 1463 1로 만들기 JAVA (0) | 2022.03.08 |
Baekjoon 2805 나무 자르기 JAVA (0) | 2022.03.08 |
Baekjoon 1966 프린터 큐 JAVA (0) | 2022.03.08 |
댓글