https://www.acmicpc.net/problem/2961
2961๋ฒ: ๋์์ด๊ฐ ๋ง๋ ๋ง์๋ ์์
์ฒซ์งธ ์ค์ ์ฌ๋ฃ์ ๊ฐ์ N(1 ≤ N ≤ 10)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ ์ค์๋ ๊ทธ ์ฌ๋ฃ์ ์ ๋ง๊ณผ ์ด๋ง์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ๋ชจ๋ ์ฌ๋ฃ๋ฅผ ์ฌ์ฉํด์ ์๋ฆฌ๋ฅผ ๋ง๋ค์์ ๋, ๊ทธ ์๋ฆฌ์ ์ ๋ง๊ณผ ์ด๋ง์
www.acmicpc.net
๋ฐฐ๋ญ ๋ฌธ์ ์ ํ์ด๋ค. ๋ฐฐ๋ญ ๋ฌธ์ ๋ ์ฌ๊ท๋ฅผ ์ด์ฉํ ๋ถ๋ถ์งํฉ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.
์ ๋ง๊ณผ ์ด๋ง์ 2์ฐจ์ ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ์ ์ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ท์ ๋งค๊ฐ๋ณ์๋ก ์์์ ์ ๋ง๊ณผ ์ด๋ง์ ๋ ๊ฒจ์ค ๋์ ์ผ๋ก ๊ณ์ฐํ๋๋ก ํ๋ค.
์์์ ๋ฃ์์ ๋์ ์๋ฃ์์ ๊ฒฝ์ฐ. ๋ ๊ฐ์ง์ ๊ฒฝ์ฐ๋ฅผ ์ฌ๊ท๋ก ๋๋ฆฌ๋๋ก ํ๋ค.
๊ทธ๋ฌ๋ค๊ฐ N๋ฒ์ ๋ค ํ์ํ๋ฉด ์ฐจ์ด๋ฅผ ๊ตฌํด ์ต์๊ฐ์ ๊ฐฑ์ ํ๋๋ก ํ๋ค. ์ด๋ ์๋ฌด๊ฒ๋ ์์ฐ๋ ๊ฒฝ์ฐ๋ ์ ์ธํด์ผ ํ๋ค.
๊ธ๊ณ ๋ ์ฃผ์ํ ์ ์ ์ด๋ง์ ๊ณฑํ๊ธฐ๋ฅผ ํ๋ฏ๋ก ์ด๊ธฐ๊ฐ์ด 0 ์๋๋ผ 1๋ก ์์ํด์ผ ํ๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N;
static int[][] dish;
static int min = 1000000000;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
dish = new int[N][2]; //์ ๋ง, ์ด๋ง
for(int i =0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
dish[i][0] = Integer.parseInt(st.nextToken());
dish[i][1] = Integer.parseInt(st.nextToken());
}
subset(0, 1, 0); //์ด ๋ง์ ๊ณฑํ๊ธฐ๋ผ์ 1๋ก ์ด๊ธฐ๊ฐ ํด์ผํจ
System.out.println(min);
}
public static void subset(int depth, int sour, int bitter) {
if(depth == N) {
if(sour != 1 && bitter != 0) { //์๋ฌด๊ฒ๋ ์ฌ์ฉ ์ํ๋ ๊ฒฝ์ฐ ์ ์ธ
int d = Math.abs(sour - bitter);
min = Math.min(min, d);
}
return;
}
subset(depth + 1, sour * dish[depth][0], bitter + dish[depth][1]);
subset(depth + 1, sour, bitter);
}
}
๊ฒฐ๊ณผ
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 1987๋ฒ - ์ํ๋ฒณ (0) | 2022.08.18 |
---|---|
14889๋ฒ - ์คํํธ์ ๋งํฌ (0) | 2022.08.16 |
๋ฐฑ์ค 17406๋ฒ - ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 4 (0) | 2022.08.11 |
1213๋ฒ - ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2022.08.11 |
๋ฐฑ์ค 3040๋ฒ - ๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด (0) | 2022.08.11 |