Algorithm

[BOJ_1182]๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ (์‹ค๋ฒ„ 2) - JAVA

์ด์ˆ˜๋ฐˆ 2023. 11. 30. 14:29


๐Ÿพ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์กฐํ•ฉ ํ˜น์€ ๋ถ€๋ถ„์ง‘ํ•ฉ
  • ๋ฐฑํŠธ๋ž˜ํ‚น

๐Ÿพ ์ƒ๊ฐ ํฌ์ธํŠธ

  • ๋ถ€๋ถ„์ˆ˜์—ด์ด๋ผ๊ณ  ๋ฌด์กฐ๊ฑด ์—ฐ์†๋œ ์ˆ˜์—ด์ด ์•„๋‹ˆ๋‹ค.
  • ์ˆ˜์—ด ๋‚ด์—์„œ 1๊ฐœ, 2๊ฐœ, .. N๊ฐœ๋ฅผ ์„ ํƒํ•˜๋Š” ์กฐํ•ฉ๋ก ์„ ํ™œ์šฉํ•˜์ž.
  • ์กฐํ•ฉ์ด ์™„์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ•ฉ์„ ๋น„๊ตํ•ด์„œ ๊ณ„์ˆ˜ํ•ด์ฃผ์ž.

 


๐Ÿพ ์†Œ์Šค์ฝ”๋“œ

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

public class Main {
	static int N;
	static int S;
	static int[] arr;
	static boolean[] visited;
	static int cnt;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken()); // N๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด
		S = Integer.parseInt(st.nextToken()); // ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ์ด s

		arr = new int[N];
		visited = new boolean[N];
		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		} // ์ž…๋ ฅ์™„

		// ํ•ฉ์ด s๊ฐ€ ๋˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ!
		// i๊ฐœ ๋ฝ‘์Œ!
		for (int i = 1; i <= N; i++) {
			combination(arr, visited, 0, i);
		}
		
		System.out.println(cnt);

	}

	private static void combination(int[] arr, boolean[] visited, int start, int r) {
		if (r == 0) {
			sum(arr, visited);
			return;
		} else {
			for (int i = start; i < arr.length; i++) {
				visited[i] = true;
				combination(arr, visited, i + 1, r - 1);
				visited[i] = false;
			}
		}
	}

	// ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ ๊ตฌํ•˜๊ธฐ
	private static void sum(int[] arr, boolean[] visited) {
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			if (visited[i]) {
				sum = sum + arr[i];
			}
		}
		if(sum == S) {
			cnt++;
		}
	}

}

๐Ÿ˜ต‍๐Ÿ’ซ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ์ 

  • ์กฐํ•ฉ๋ก ์— ๋Œ€ํ•ด ๊นŠ์ด์žˆ๊ฒŒ ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. ์กฐํ•ฉ๋ก  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๋ฅผ ์™ธ์›Œ๋ฒ„๋ฆฌ๋‹ค ๋ณด๋‹ˆ, ์ดํ•ดํ•ด์„œ ํ’€๊ธฐ๋ณด๋‹ค๋Š” ์•”๊ธฐํ•ด์„œ ํ‘ธ๋Š” ๋А๋‚Œ์ด ๊ฐ•ํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ํœ˜๋ฐœ์„ฑ์ด ๊ฐ•ํ•˜๋‹ค ใ… .ใ… ๐Ÿ˜‚๐Ÿ˜‚