02-03 07:40
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[Algorithm]์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฐ”_56 ์ตœ๋Œ€ ์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ(DFS) ๋ณธ๋ฌธ

Algorithm/Java

[Algorithm]์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฐ”_56 ์ตœ๋Œ€ ์ ์ˆ˜ ๊ตฌํ•˜๊ธฐ(DFS)

miinsun 2022. 3. 2. 18:01

 

๐Ÿ’ฌ ๋ฌธ์ œ ์„ค๋ช…

์ด๋ฒˆ ์ •๋ณด์˜ฌ๋ฆผํ”ผ์•„๋“œ๋Œ€ํšŒ์—์„œ ์ข‹์€ ์„ฑ์ ์„ ๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ ํ˜„์ˆ˜๋Š” ์„ ์ƒ๋‹˜์ด ์ฃผ์‹  N๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์„ ํ’€์—ˆ์„ ๋•Œ ์–ป๋Š” ์ ์ˆ˜์™€ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ œํ•œ์‹œ๊ฐ„ M์•ˆ์— N๊ฐœ์˜ ๋ฌธ์ œ ์ค‘ ์ตœ๋Œ€์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(ํ•ด๋‹น๋ฌธ์ œ๋Š” ํ•ด๋‹น์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด ํ‘ธ๋Š” ๊ฑธ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค, ํ•œ ์œ ํ˜•๋‹น ํ•œ๊ฐœ๋งŒ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

 

 

๐Ÿ”จ ์ž…์ถœ๋ ฅ ์˜ˆ

 

์ž…๋ ฅ - ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜N(1<=N<=20)๊ณผ ์ œํ•œ ์‹œ๊ฐ„ M(10<=M<=300)์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ N์ค„์— ๊ฑธ์ณ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์„ ๋•Œ์˜ ์ ์ˆ˜์™€ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

5 20
10 5
25 12
15 8
6 3
7 4

์ถœ๋ ฅ - ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ œํ•œ ์‹œ๊ฐ„์•ˆ์— ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

โ€‹

๐Ÿ’ป Solution.java

import java.util.*;

public class Main {
	static int n, m, score, sum = 0;
	static int max = Integer.MIN_VALUE;
	
	public void DFS(int L, int score, int sum, int[][] arr) {
		if(m < sum) return;
		if(L == n) {
			max = Math.max(max, score);
		}
		else {
			DFS(L + 1, score + arr[L][0], sum + arr[L][1], arr);
			DFS(L + 1, score, sum, arr);
		}
 	}
	
	public static void main(String[] args){
		Main main = new Main();
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt(); //๋ฌธ์ œ ๊ฐœ์ˆ˜
		m = sc.nextInt(); //์ œํ•œ ์‹œ๊ฐ„

		int[][] arr = new int [n][2];		
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < 2; j++) {
				arr[i][j] = sc.nextInt();
			}
		}
		
		main.DFS(0, 0, 0, arr);
		System.out.println(max);
		
		sc.close();
		return ;
	}
}

 

Comments