1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [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);
    }
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์—ˆ๋‹ค.

  1. ๋จผ์ € ์•ž์œผ๋กœ K๋งŒํผ ๊ฐ”๋‹ค๊ฐ€ ํ•œ ์นธ์”ฉ ์œ„์น˜๋กœ ๋ณต๊ท€ํ•˜๋ฉฐ ํ–„๋ฒ„๊ฑฐ๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•œ๋‹ค.
  2. ํ–„๋ฒ„๊ฑฐ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ์œ„์น˜์˜ ํƒ์ƒ‰์€ ๋ -> boolean ๋ฐฐ์—ด์— ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน์—ˆ๋‹ค๋Š” ํ‘œ์‹œ๋ฅผ ํ•ด์ค€๋‹ค. ( true )
  3. ๋งŒ์•ฝ ์•ž์— ํ–„๋ฒ„๊ฑฐ๊ฐ€ ์—†๋‹ค๋ฉด ํ•œ ์นธ์”ฉ K๋งŒํผ ๋’ค๋กœ ํƒ์ƒ‰์„ ํ•œ๋‹ค.
  4. ์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 2๋ฒˆ ์ฒ˜๋Ÿผ ์‹คํ–‰
  5. ์ „์ฒด N๋งŒํผ ๋Œ๋ฉด์„œ ๋จน์€ ํ–„๋ฒ„๊ฑฐ๋ฅผ ์ฒดํฌ
  6. ๊ทธ ์ˆ˜๋“ค์„ ๋‹ค ๋”ํ•ด์ค€๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: