๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/5525
- 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์ด ๋ช ๊ตฐ๋ฐ ํฌํจ๋์ด ์๋์ง ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- IOI ํจํด์ด ๋ช๊ฐ ์๋์ง ํ์ธํ์ฌ ๊ทธ ๊ฐ์์ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ๊ธธ์ด ๊ฐ์๊ฐ ๊ฐ๋ค๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ์นด์ดํธํด์ค๋ค.
- ๋ฐ๋ณต ๋ฒ์๋ 1๋ถํฐ M - 2๊น์ง ํ๋๋ฐ, ๊ทธ ์ด์ ๋ i-1, i, i+1๋ฒ์งธ ๊ฐ์ด IOI์ธ์ง ํ๋จํด์ผ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- ์ฒ์์๋ ๋จ์ํ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ผ๋ง์ธ์ง ๋ณด๊ณ ์ง์ IOIํจํด์ ๋ง๋ค์ด์คฌ๋ค
- ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ค ๋ฌธ์์ด์ IOIํจํด ๊ธธ์ด๋งํผ subString์ ํตํด ์๋ผ์ค์ IOIํจํด์ด๋ ๊ฐ์์ง ๋น๊ตํ๋ค.
- ๋ง์ฝ ๊ฐ๋ค๋ฉด ์นด์ดํธ๋ฅผ ํด์ฃผ๋ ์์ผ๋ก ํ๋๋ฐ 50์ ์ ๋ฐ์๋ค...
- ์๊ณ ๋ณด๋ ๋ฌธ์์ด์ ์ง์ ๋ํด์ค์ ๋ง๋๋ ๊ฒ๊ณผ ๋ฌธ์์ด์ ์๋ฅด๊ณ ๋น๊ตํ๋ ๊ฒ์ด ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ ค์ ์๊ฐ์ด๊ณผ ๋๋ฌธ์ 50์ ์ธ ๊ฒ ๊ฐ์๋ค.
- ๊ทธ๋์ ์๊ฐ์ ์ต๋ํ์ผ๋ก ์ค์ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๋๋ฅผ ์ง๊ธฐ ์ํด์ ๊ณ ๋ฏผ์ ์ข ๋ง์ด ํ๋ค....
์ฝ๋
import java.io.*;
import java.util.*;
public class BOJ5525 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// ๋ฐ๋ณต๋๋ ๋ฌธ์์ด ๊ธธ์ด
int N = Integer.parseInt(br.readLine());
// ๋ฌธ์์ด ๊ธธ์ด
int M = Integer.parseInt(br.readLine());
// ๋น๊ตํ ๊ธฐ์ค ๋ฌธ์์ด
String S = br.readLine();
// IOI ๊ฐ์ ์นด์ดํธ
int cnt = 0;
// ๊ฒฐ๊ณผ๊ฐ
int result = 0;
// i-1, i, i+1๋ฒ์งธ ๊ฐ์ด IOI์ธ์ง ๋น๊ตํ๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ
for(int i = 1; i < M - 1; i++){
// i - 1๋ฒ์งธ๊ฐ I๊ณ i๋ฒ์งธ๊ฐ O, i + 1๋ฒ์งธ๊ฐ I๋ผ๋ฉด
if((S.charAt(i - 1) == 'I') && (S.charAt(i) == 'O') && (S.charAt(i + 1) == 'I')){
// IOI ๊ฐ์ ์นด์ดํธ + 1
cnt = cnt + 1;
// ๋ค์ IOI ํจํด์ ํ์ธํ๊ธฐ ์ํด์ i๊ฐ์ ์ฆ๊ฐ์ํด
// ์๋๋ i++ ๋๋ฉด์ IOIํจํด์์ i-1, i, i+1๋ฒ์งธ๊ฐ OIO๊ฐ ๋๋ฏ๋ก
// ํ๋ฒ ๋ ์ฆ๊ฐ์์ผ ์ฃผ๋ ๊ฒ
i = i + 1;
// ๋ง์ฝ ์ฐพ์ IOIํจํด์ด ์ฐพ์์ผ๋๋ IOIํจํด ๊ธธ์ด์ ๊ฐ๋ค๋ฉด
if(cnt == N){
// ๊ฒฐ๊ณผ๊ฐ + 1ํ๊ณ
result = result + 1;
// IOIํจํด ์นด์ดํธ ํ๊ฐ๋ฅผ ๋นผ์ค
cnt = cnt - 1;
}
}
// ๋ง์ฝ i-1, i, i+1์ด IOIํจํด์ด ์๋๋ผ๋ฉด
else{
// IOIํจํด ๊ฐ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํ ์ํด
cnt = 0;
}
}
System.out.println(result);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 11286 ์ ๋๊ฐ ํ (2) | 2024.08.26 |
---|---|
[Java] BOJ 6064 ์นด์ ๋ฌ๋ ฅ (0) | 2024.08.25 |
[Java] BOJ 2667 ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2024.08.23 |
[Java] BOJ 2178 ๋ฏธ๋กํ์ (2) | 2024.08.22 |
[Java] BOJ 1931 ํ์์ค ๋ฐฐ์ (0) | 2024.08.21 |