๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
[JAVA/์ฝ๋ฉํ ์คํธ] ์ต๋ ์ ์ ๊ตฌํ๊ธฐ(DFS) ๋ณธ๋ฌธ
[JAVA/์ฝ๋ฉํ ์คํธ] ์ต๋ ์ ์ ๊ตฌํ๊ธฐ(DFS)
์์ผ์ด 2021. 11. 30. 05:29์ค๋ช
์ด๋ฒ ์ ๋ณด์ฌ๋ฆผํผ์๋๋ํ์์ ์ข์ ์ฑ์ ์ ๋ด๊ธฐ ์ํ์ฌ ํ์๋ ์ ์๋์ด ์ฃผ์ N๊ฐ์ ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํฉ๋๋ค.
๊ฐ ๋ฌธ์ ๋ ๊ทธ๊ฒ์ ํ์์ ๋ ์ป๋ ์ ์์ ํธ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ฃผ์ด์ง๊ฒ ๋ฉ๋๋ค.
์ ํ์๊ฐ M์์ N๊ฐ์ ๋ฌธ์ ์ค ์ต๋์ ์๋ฅผ ์ป์ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
(ํด๋น๋ฌธ์ ๋ ํด๋น์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉด ํธ๋ ๊ฑธ๋ก ๊ฐ์ฃผํ๋ค, ํ ์ ํ๋น ํ๊ฐ๋ง ํ ์ ์์ต๋๋ค.)
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ๋ฌธ์ ์ ๊ฐ์N(1<=N<=20)๊ณผ ์ ํ ์๊ฐ M(10<=M<=300)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ N์ค์ ๊ฑธ์ณ ๋ฌธ์ ๋ฅผ ํ์์ ๋์ ์ ์์ ํธ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์ ํ ์๊ฐ์์ ์ป์ ์ ์๋ ์ต๋ ์ ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ
5 20
10 5
25 12
15 8
6 3
7 4
์์ ์ถ๋ ฅ
41
-2022.01.28
import java.util.*;
public class Main {
static int[] arrayScore;
static int[] arrayTime;
static int total;
static int scoreResult = 0;
public void DFS(int Level, int sumTime, int score) {
if(sumTime > total){
return;
}
if(score > scoreResult){
scoreResult = score;
}
if(Level == arrayScore.length) {
return;
}
DFS(Level+1,sumTime+arrayTime[Level], score+arrayScore[Level]);
DFS(Level+1, sumTime, score);
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n=in.nextInt();
total = in.nextInt();
arrayScore = new int[n];
arrayTime = new int[n];
for(int i=0; i<n; i++) {
arrayScore[i] = in.nextInt();
arrayTime[i] = in.nextInt();
}
T.DFS(0,0, 0);
System.out.println(scoreResult);
}
}
import java.util.*;
public class Main {
static int answer = Integer.MIN_VALUE, n, m;
boolean flag=false;
// ps - ๊ฐ ๋ฌธ์ ์ ์ ์, pt - ๊ฐ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ
public void DFS(int L, int sum, int time, int[] ps, int[] pt){
// ์ ํ์๊ฐ์ ๋์์ ๊ฒฝ์ฐ
if(time>m){
return;
}
if(L==n){
answer = Math.max(answer, sum);
}else{
// ๋ถ๋ถ์งํฉ ์ฐ๊ฒ ๋ค.
DFS(L+1, sum+ps[L], time+pt[L], ps, pt);
// ๋ถ๋ถ์งํฉ ์ฐ์ง ์๊ฒ ๋ค.
DFS(L+1, sum, time, ps, pt);
}
}
public static void main(String[] args) {
Main main = new Main();
Scanner kb = new Scanner(System.in);
// ๋ฌธ์ ์ ๊ฐ์
n = kb.nextInt();
// ์ ํ ์๊ฐ
m = kb.nextInt();
// ๊ฐ ๋ฌธ์ ์ ์ ์
int[] a = new int[n];
// ๊ฐ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ
int[] b = new int[n];
for(int i=0; i<n; i++){
a[i] = kb.nextInt();
b[i] = kb.nextInt();
}
main.DFS(0, 0, 0, a, b);
System.out.println(answer);
}
}
'๊ฐ๋ฐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA/์ฝ๋ฉํ ์คํธ] ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ(์นด์นด์ค) (0) | 2022.01.13 |
---|---|
[JAVA/์ฝ๋ฉํ ์คํธ] ์ต๋ ๊ธธ์ด ์ฐ์๋ถ๋ถ์์ด (0) | 2022.01.13 |
[JAVA/์ฝ๋ฉํ ์คํธ] ๋ฐ๋์ด ์น์ฐจ(DFS) (0) | 2021.11.28 |
[JAVA/์ฝ๋ฉํ ์คํธ] ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ (0) | 2021.11.22 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2021.10.30 |