๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 19941_ํ–„๋ฒ„๊ฑฐ ๋ถ„๋ฐฐ

๋ฟŒ์•ผ._. 2023. 10. 4. 14:34

Silver III

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/19941)

< ํ–„๋ฒ„๊ฑฐ ๋ถ„๋ฐฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

์‚ฌ๋žŒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์žˆ๋Š” ์™ผ์ชฝ์— ์žˆ๋Š” ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จผ์ € ๋จน๋Š”๋‹ค. ์™ผ์ชฝ์— ๋จน์„ ์ˆ˜ ์žˆ๋Š” ํ–„๋ฒ„๊ฑฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ์‚ฌ๋žŒ์˜ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน๋Š”๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class _19941_ { // ํ–„๋ฒ„๊ฑฐ ๋ถ„๋ฐฐ

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());

		int n = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());

		String str = bf.readLine();
		boolean visited[] = new boolean[n];
		boolean flag = false;
		int result = 0;

		for (int i = 0; i < str.length(); i++) {
			char x = str.charAt(i);
			if (x == 'P') {
				visited[i] = true;
				flag = false;
				for (int j = k; j > 0; j--) {
					if (i - j >= 0 && !visited[i - j]) {
						visited[i - j] = true;
						flag = true;
						break;
					}
				}
				if (!flag) {
					for (int j = 1; j < k + 1; j++) {
						if (i + j < n && !visited[i + j] && str.charAt(i + j) != 'P') {
							visited[i + j] = true;
							flag = true;
							break;
						}
					}
				}
				if (flag)
					result += 1;
			}
		}
		System.out.println(result);
	}
}

 

Main

๋ณ€์ˆ˜)
n, k : ์‹ํƒ์˜ ๊ธธ์ด, ํ–„๋ฒ„๊ฑฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ
str : ์‚ฌ๋žŒ๊ณผ ํ–„๋ฒ„๊ฑฐ์˜ ์œ„์น˜
visited : ์ „์ฒด ํ–„๋ฒ„๊ฑฐ ๋จน์€ ์—ฌ๋ถ€
flag : ์‚ฌ๋žŒ์ด ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน์€ ์—ฌ๋ถ€
result : ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์‚ฌ๋žŒ ์ˆ˜

 

- ์‹ํƒ์˜ ๊ธธ์ด(n), ํ–„๋ฒ„๊ฑฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ(k) ์ž…๋ ฅ

- ์‚ฌ๋žŒ๊ณผ ํ–„๋ฒ„๊ฑฐ์˜ ์œ„์น˜(str) ์ž…๋ ฅ

- str์„ ์ˆœํ™˜ํ•˜๋ฉฐ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ํ˜„์žฌ ์œ„์น˜์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ์žˆ๋Š” ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน์Œ. ์™ผ์ชฝ์— ๋จน์„ ์ˆ˜ ์žˆ๋Š” ํ–„๋ฒ„๊ฑฐ๊ฐ€ ์—†๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน์Œ. ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด result +1

- ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์‚ฌ๋žŒ ์ˆ˜(result) ์ถœ๋ ฅ