๋ฌธ์ (์ถ์ฒ: 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) ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16943_์ซ์ ์ฌ๋ฐฐ์น (0) | 2023.10.06 |
---|---|
[Baekjoon] 2992_ํฌ๋ฉด์ ์์ ์ (1) | 2023.10.05 |
[Baekjoon] 10709_๊ธฐ์์บ์คํฐ (1) | 2023.10.03 |
[Baekjoon] 6146_์ ์๋ฅผ ๋ง๋๋ฌ (1) | 2023.10.02 |
[Baekjoon] 15688_์ ์ ๋ ฌํ๊ธฐ 5 (0) | 2023.09.29 |