๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 14225_๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ

๋ฟŒ์•ผ._. 2024. 2. 12. 18:46

Silver I

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

< ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ >

 

๋ฌธ์ œ ํ’€์ด 

 

๋ชจ๋“  ์กฐํ•ฉ์„ ํ†ตํ•ด ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ž์—ฐ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 my solution (Java)

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

public class _14225_ { // ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ
	static int arr[], answer[], n;
	static boolean result[];

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

		n = Integer.parseInt(bf.readLine());

		arr = new int[n];
		result = new boolean[2000001];

		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
			result[arr[i]] = true;
		}
		Arrays.sort(arr);

		for (int i = 2; i <= n; i++) {
			answer = new int[i];
			search(i, 0, 0);
		}

		for (int i = 1; i < result.length; i++) {
			if (!result[i]) {
				System.out.println(i);
				break;
			}
		}
	}

	private static void search(int max, int start, int idx) {
		if (idx == max) {
			int sum = 0;
			for (int i = 0; i < idx; i++) {
				sum += answer[i];
			}
			result[sum] = true;
			return;
		}
		for (int i = start; i < n; i++) {
			answer[idx] = arr[i];
			search(max, i + 1, idx + 1);
		}
	}
}
๋ณ€์ˆ˜)
n : ์ˆ˜์—ด์˜ ํฌ๊ธฐ
arr : ์ˆ˜์—ด S
result : ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ž์—ฐ์ˆ˜
answer : ๋ถ€๋ถ„ ์ˆ˜์—ด

 

์ˆ˜์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ˆ˜์—ด์˜ ํฌ๊ธฐ๋งŒํผ ์ˆ˜์—ด์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค. ์กฐํ•ฉ์„ ํ†ตํ•ด ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ž์—ฐ์ˆ˜๋ฅผ ์ฐพ์•„ ์ถœ๋ ฅํ•œ๋‹ค.

 

search (์กฐํ•ฉ ๊ฐœ์ˆ˜, ์‹œ์ž‘ ์ธ๋ฑ์Šค, ์ธ๋ฑ์Šค )

์ˆ˜์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ์กฐํ•ฉ ๊ฐœ์ˆ˜์™€ ์ผ์น˜ํ•˜๋‹ค๋ฉด ์กฐํ•ฉ์„ ๋‹ค ๊ตฌํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ํ˜„์žฌ ๊ตฌํ•œ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค. ํ•ฉ์„ ๊ตฌํ•œ ํ›„ result ๋ฐฐ์—ด์—์„œ ๊ทธ ๊ฐ’์„ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ข…๋ฃŒํ•œ๋‹ค.