~๋ชฉ์ฐจ~
๋ฌธ์
https://www.acmicpc.net/problem/2961
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- DFS, ์์ ํ์
- ์ ๋ง๊ณผ ์ด๋ง์ ์ ์ฅํ ๋ฐฐ์ด์ ํ๋์ฉ ๋ฐฉ๋ฌธํ๋ฉฐ ๋ฃ์์ง ์ ๋ฃ์์ง ํ์ธํ๋ค
- ๋ชจ๋ ์์์ ๋ฃ์์ง ์ ๋ฃ์์ง ํ์ธํ์์ ๋, ์ด๋ง๊ณผ ์ ๋ง์ ์ฐจ์ด๊ฐ answer๋ณด๋ค ์๋ค๋ฉด answer๋ฅผ ์ ๋ฐ์ดํธ
- ์์ ํ์ ํ answer๋ฅผ ์ถ๋ ฅ
์์ฑ ์ฝ๋
import java.util.*;
import java.io.*;
public class Main {
static int N;
static int[] S;
static int[] C;
static int answer = Integer.MAX_VALUE;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//์
๋ ฅ ๋ฐ๊ธฐ
N = Integer.parseInt(br.readLine());
S = new int[N]; // ์ ๋ง
B = new int[N]; // ์ด ๋ง
for(int i=0; i<N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
S[i] = Integer.parseInt(st.nextToken());
B[i] = Integer.parseInt(st.nextToken());
}
DFS(0, 1, 0, 0); // (ํธ๋ฆฌ ๊น์ด, ์ ๋ง, ์ด๋ง, ์ ํํ ์์ ๊ฐ์)
System.out.println(answer);
}
private static void DFS(int level, int s, int b, int selectedCount) { //์ํ
if(level == N) { //๋ชจ๋ ์กฐํฉ ์ฐพ์
if(selectedCount != 0 && Math.abs(s-b) < answer) //1๊ฐ ์ด์ ์ ํํ๊ณ ์ด๋ง๊ณผ ์ ๋ง์ ์ฐจ์ด๊ฐ ์ง๊ธ๊น์ง ์ฐพ์ ๊ฐ๋ณด๋ค ์๋ค๋ฉด
answer = Math.abs(s-b); // ๊ฐ์ฅ ์์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ
return;
}
DFS(level+1, s*S[level], b+B[level], selectedCount+1); //์ ํ
DFS(level+1, s, b, selectedCount); //๋น์ ํ
}
}
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
'๐๋ฌธ์ ํ์ด > ๐งฉBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ๋ฐฑ์ค 2493 ํ | Stack (0) | 2023.08.08 |
---|---|
[JAVA] ๋ฐฑ์ค 12891 DNA ๋น๋ฐ๋ฒํธ | ์ฌ๋ผ์ด๋ฉ ์๋์ฐ (0) | 2023.08.04 |
[Python] ๋ฐฑ์ค 1654 ๋์ ์๋ฅด๊ธฐ | ์ด์ง ํ์ | ์๊ฐ ์ด๊ณผ (0) | 2023.07.08 |
[Python] ๋ฐฑ์ค 9655 ๋ ๊ฒ์ | DP (0) | 2023.06.18 |
[Python] ๋ฐฑ์ค 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ | DP (2) | 2023.06.16 |