์ฝ๋
import java.util.Scanner;
public class Solution {
static int N; // ์ฌ๋ฃ ์
static int L; // ์ ํ ์นผ๋ก๋ฆฌ
static int ans; // ์ต๋ ์ ์
static int[] score; // ์ ์
static int[] cal; // ์ ํ ์นผ๋ก๋ฆฌ
/**
* @param count - ์ฌ๋ฃ์ ์นด์ดํธ
* @param sum - ์ต๋ ์ ์
* @param allCal - ์นผ๋ก๋ฆฌ ํฉ
*/
public static void dfs(int count, int sumScore, int allCal) {
/* ๊ธฐ์ ์ฌ๋ก: ์ฌํ ๋ํ ์นผ๋ก๋ฆฌ๋์ด ์ ํ ์นผ๋ก๋ฆฌ๋ณด๋ค ํด๋,*/
if(allCal > L) {
return;
}
/* N๊ฐ์ ์ฌ๋ฃ๊น์ง ๋ฝ์์๊ฒฝ์ฐ -> ์ต๋ ์ ์ ๋น๊ต*/
if(count == N) {
ans = Math.max(ans, sumScore);
return;
}
/* ์ฌ๊ทํธ์ถ(dfs): ์ฌ๋ฃ์+1, ์ ์, ์นผ๋ก๋ฆฌ ํฉ */
dfs(count+1, sumScore+score[count], allCal+cal[count]);
/* ์ฌ๋ฃ ๋นผ๊ธฐ */
dfs(count+1, sumScore, allCal);
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
for(int tc=1; tc<=t; tc++) {
N = scan.nextInt(); // ์ฌ๋ฃ ์
L = scan.nextInt(); // ์ ํ ์นผ๋ก๋ฆฌ
score = new int[N];
cal = new int[N];
ans = 0;
for(int i=0; i<N; i++) {
score[i] = scan.nextInt();
cal[i] = scan.nextInt();
}
// ์ฌ๋ฃ๊ฐ์, ์ ์ํฉ, ์นผ๋ก๋ฆฌ๋ 0์ผ๋ก Start
dfs(0, 0, 0);
System.out.println("#" + tc + " " + ans);
}
scan.close();
}
}
ํ์ด
์ ํ๋ ์นผ๋ก๋ฆฌ(L) ์์ ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ์ ํํ๋ฉด ๋๋ค.
๋ถ๋ถ์งํฉ์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ ๋น์ทํ๋ค.
๊ฐ ์์์ ๋ํด ํด๋น ์ฌ๋ฃ๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ, ์ ํํ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ
์ฌ๊ทํจ์๋ฅผ ํตํด ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ฉฐ ์ต์ ์ ํด๋ฅผ ์ฐพ์์ผ ํ๋ค.
์ด ๋ฌธ์ ์์๋ ๋๊ฐ์ง ์ข ๋ฃ์กฐ๊ฑด์ด ์๋ค.
- ์ฌ๋ฃ๋ฅผ ์ ํํ๋ฉด์ ๋ํด์ง ์นผ๋ก๋ฆฌ์ ํฉ์ด ์ ํ๋ ์นผ๋ก๋ฆฌ๋ฅผ ์ด๊ณผํ ๊ฒฝ์ฐ
- allCal > L
- N๋ฒ์งธ ์ฌ๋ฃ๊น์ง ๋ชจ๋ ํ์ํ ๊ฒฝ์ฐ
- count == N : ์ต๋ ์ ์๋ฅผ ๋น๊ตํ๋ค(maxํจ์)
์ฌ๊ท ํธ์ถ๋ถ๋ถ์์๋, ํ์์ ํ๋ฉฐ ์ ์์ ํฉ๊ณผ ์นผ๋ก๋ฆฌ์ ํฉ์ ๋ํด๊ฐ๋๋ฐ,
- ์ฌ๋ฃ๋ฅผ ์ ํํ ๊ฒฝ์ฐ: ์ฌ๋ฃ์ ์ ์, ์นผ๋ก๋ฆฌ๋ฅผ ๋ชจ๋ ๋ํด์ค๋ค.
- ์ฌ๋ฃ๋ฅผ ์ ํํ์ง ์๋ ๊ฒฝ์ฐ: ์ฌ๋ฃ๋ง +1(๋ค์ ์ฌ๋ฃ๋ก ๋๊ฒจ์ฃผ๋) ํด์ค๋ค.
์์ง ์์ด, ์กฐํฉ์ ๋ํด์ ์ ๋ฆฌ๊ฐ ์๋์ด์ ์ฌ๊ท ํจ์๊ฐ ์ต์ํ์ง๊ฐ ์๋ค...
๋น ๋ฅธ ์์ผ๋ด์ ์์ด&์กฐํฉ์ ๋ํด ํ๋ฒ ์ ๋ฆฌ๋ฅผ ํด์ผ๊ฒ ๋ฐ ,,
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SW Expert Academy] - (D4)7829. ๋ณด๋ฌผ์ ํํ (0) | 2020.07.04 |
---|---|
[SW Expert Academy] - (D3)5162. ๋ ๊ฐ์ง ๋นต์ ๋๋ ๋ง (0) | 2020.07.01 |
[SW Expert Academy] - (D3)10032. ๊ณผ์ ๋ถ๋ฐฐ (0) | 2020.06.25 |
[SW Expert Academy] - (D2)1979. ์ด๋์ ๋จ์ด๊ฐ ๋ค์ด๊ฐ ์ ์์๊น (0) | 2020.06.23 |
[SW Expert Academy] - (D3)8016. ํ์ ํผ๋ผ๋ฏธ๋ (0) | 2020.06.20 |
๋๊ธ