BOJ_S3_19941
๐ [S3_19941] ํ๋ฒ๊ฑฐ ๋ถ๋ฐฐ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N,K;
static String str;
static boolean[] check;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
// input
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
str = br.readLine();
check = new boolean[N];
for(int i=0; i<N; i++){
// ํ๋ฒ๊ฑฐ๋ฅผ ๊ตฌํ๋์ง ์ฌ๋ถ ์ฒดํฌ
boolean flag = false;
// ์ฌ๋์ผ ๋ ํ๋ฒ๊ฑฐ ์ฐพ๊ธฐ
if(str.charAt(i) == 'P'){
// ์์ผ๋ก ์ฐพ๊ธฐ
for(int j=K;j>0;j--){
int frontNum = i-j;
// ๋ฒ์๋ฅผ ๋์ด๊ฐ ๊ฑฐ๋ ์ด๋ฏธ ์ ํํ๋ ๊ฒฝ์ฐ
if(frontNum<0 || check[frontNum])continue;
// ํ๋ฒ๊ฑฐ๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ
if(str.charAt(frontNum) == 'H'){
check[frontNum] = true;
flag = true;
break;
}
}
// ๋ง์ฝ ํ๋ฒ๊ฑฐ๋ฅผ ์ด๋ฏธ ์ฐพ์๋ค๋ฉด ํต๊ณผ
if(flag) continue;
// ๋ค๋ก ์ฐพ๊ธฐ
for(int j=1;j<=K;j++){
int backNum = i+j;
// ๋ฒ์๋ฅผ ๋์ด๊ฐ ๊ฑฐ๋ ์ด๋ฏธ ์ ํํ๋ ๊ฒฝ์ฐ
if(backNum>=N || check[backNum]) continue;
// ํ๋ฒ๊ฑฐ๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ
if(str.charAt(backNum) == 'H'){
check[backNum] = true;
break;
}
}
}
}
// ๋จน์ ์ฌ๋ ์ ํจ
int res = 0;
for(int i=0; i<check.length; i++){
if(check[i]) res++;
}
System.out.println(res);
}
}
๐ค ๋์ ์๊ฐ
๊ฐ๋จํ๊ฒ ํ์๋ค.
- ๋จผ์ ์์ผ๋ก K๋งํผ ๊ฐ๋ค๊ฐ ํ ์นธ์ฉ ์์น๋ก ๋ณต๊ทํ๋ฉฐ ํ๋ฒ๊ฑฐ๊ฐ ์๋์ง ์ฒดํฌํ๋ค.
- ํ๋ฒ๊ฑฐ๊ฐ ์์ผ๋ฉด ๊ทธ ์์น์ ํ์์ ๋ -> boolean ๋ฐฐ์ด์ ํ๋ฒ๊ฑฐ๋ฅผ ๋จน์๋ค๋ ํ์๋ฅผ ํด์ค๋ค. ( true )
- ๋ง์ฝ ์์ ํ๋ฒ๊ฑฐ๊ฐ ์๋ค๋ฉด ํ ์นธ์ฉ K๋งํผ ๋ค๋ก ํ์์ ํ๋ค.
- ์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก 2๋ฒ ์ฒ๋ผ ์คํ
- ์ ์ฒด N๋งํผ ๋๋ฉด์ ๋จน์ ํ๋ฒ๊ฑฐ๋ฅผ ์ฒดํฌ
- ๊ทธ ์๋ค์ ๋ค ๋ํด์ค๋ค.