๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 16987_๊ณ„๋ž€์œผ๋กœ ๊ณ„๋ž€์น˜๊ธฐ

๋ฟŒ์•ผ._. 2024. 3. 4. 14:04

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: 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