๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/16987)
< ๊ณ๋์ผ๋ก ๊ณ๋์น๊ธฐ >
๋ฌธ์ ํ์ด
๊ณ๋ ํ๋๋ก ๋ค๋ฅธ ๊ณ๋์ ๊นฐ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ธํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _16987_ { // ๊ณ๋์ผ๋ก ๊ณ๋์น๊ธฐ
static Egg arr[];
static boolean visited[];
static int cnt, result;
static class Egg {
private int d;
private int w;
public Egg(int d, int w) {
this.d = d;
this.w = w;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
arr = new Egg[n];
visited = new boolean[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
arr[i] = new Egg(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
result = 0;
cnt = 0;
search(0);
System.out.println(result);
}
private static void search(int idx) {
for (int i = 0; i < arr.length; i++) {
if (idx == i) {
continue;
}
if (!visited[i]) {
arr[idx].d -= arr[i].w;
arr[i].d -= arr[idx].w;
if (arr[i].d <= 0) {
cnt += 1;
visited[i] = true;
}
if (arr[idx].d <= 0) {
cnt += 1;
visited[idx] = true;
}
if(result < cnt ) {
result= cnt;
}
int temp=idx+1;
while(temp<arr.length && visited[temp]) {
temp++;
}
if(temp < arr.length) {
search(temp);
}
arr[idx].d += arr[i].w;
arr[i].d += arr[idx].w;
if (arr[i].d-arr[idx].w <=0 && arr[i].d > 0) {
cnt -= 1;
visited[i] = false;
}
if (arr[idx].d-arr[i].w <=0 && arr[idx].d > 0) {
cnt -= 1;
visited[idx] = false;
}
}
}
}
}
๋ณ์)
Egg : ๋ด๊ตฌ๋(d), ๋ฌด๊ฒ(w)๋ฅผ ๋ณ์๋ก ๊ฐ์ง๋ ํด๋์ค
n : ๊ณ๋์ ์
arr : ๊ณ๋ ์ ๋ณด
visited : ๊ณ๋ ๊นจ์ง ์ฌ๋ถ
result : ๊นฐ ์ ์๋ ๊ณ๋์ ์ต๋ ๊ฐ์
cnt : ์์ ํ์์ ํ๋ ๋์ ๊นฐ ์ ์๋ ๊ณ๋ ์
๊ณ๋์ ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๊ณ๋์ ์๋งํผ ๊ณ๋์ ๋ด๊ตฌ๋์ ๋ฌด๊ฒ๋ฅผ ์ ๋ ฅ๋ฐ์ arr ๋ฐฐ์ด์ ๊ณ๋์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค. search ํจ์๋ฅผ ํธ์ถํด์ ๊นฐ ์ ์๋ ๊ณ๋์ ์ต๋ ๊ฐ์๋ฅผ ๊ตฌํด ์ถ๋ ฅํ๋ค.
search(idx)
๊ณ๋์ ์ ์ฒด ํ์ํ๋ฉด์ ๋ค์ ๊ณผ์ ์ ์ํํ๋ค.
1) idx==i ์ธ ๊ฒฝ์ฐ ์๊ธฐ ์์ ์ ์น ์ ์์ผ๋ฏ๋ก ๋์ด๊ฐ๋ค.
2) ์์ง ๊นจ์ง์ง ์์ ๊ณ๋์ด๋ผ๋ฉด ์น๋ค
3) ์๋ก ์ณ์ ๊นจ์ง ๊ณ๋์ด ์๋ค๋ฉด cnt+1, ๊นจ์ง ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
4) ๊นฐ ์ ์๋ ๊ณ๋์ ์ต๋ ๊ฐ์๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
5) ํ์ฌ idx์์ ์ค๋ฅธ์ชฝ ๊ณ๋์ ์ดํด๋ณด๋ฉฐ ์์ง ๊นจ์ง์ง ์์ ๊ณ๋์ ์ ํํด search ํจ์๋ฅผ ํธ์ถํ๋ค.
6) ์์ ํ์์ ์ํด 3) ๊ณผ์ ์ ๋๋๋ฆฐ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 9417_์ต๋ GCD (0) | 2024.03.06 |
---|---|
[Baekjoon] 1461_๋์๊ด (0) | 2024.03.05 |
[Baekjoon] 5107_๋ง๋๋ (0) | 2024.03.01 |
[Baekjoon] 16206_๋กค์ผ์ดํฌ (0) | 2024.02.29 |
[Baekjoon] 9421_์์์๊ทผ์ (1) | 2024.02.28 |