Skip to content

Commit b0c7479

Browse files
committed
[Bronze I] Title: 일곱 난쟁이, Time: 136 ms, Memory: 16360 KB -BaekjoonHub
1 parent fd4a26a commit b0c7479

2 files changed

Lines changed: 79 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# [Bronze I] 일곱 난쟁이 - 2309
2+
3+
[문제 링크](https://www.acmicpc.net/problem/2309)
4+
5+
### 성능 요약
6+
7+
메모리: 16360 KB, 시간: 136 ms
8+
9+
### 분류
10+
11+
브루트포스 알고리즘, 정렬
12+
13+
### 제출 일자
14+
15+
2026년 1월 19일 20:34:12
16+
17+
### 문제 설명
18+
19+
<p>왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.</p>
20+
21+
<p>아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.</p>
22+
23+
<p>아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.</p>
24+
25+
### 입력
26+
27+
<p>아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.</p>
28+
29+
### 출력
30+
31+
<p>일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.</p>
32+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import java.io.FileInputStream;
2+
import java.io.BufferedReader;
3+
import java.io.InputStreamReader;
4+
import java.util.*;
5+
6+
import static java.lang.System.exit;
7+
8+
public class Main {
9+
10+
private static int[] nums;
11+
private static int[] temp;
12+
13+
public static void main(String[] args) throws Exception {
14+
//System.setIn(new FileInputStream("input.txt")); // 제출 시 이 줄만 주석처리
15+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
16+
17+
nums = new int[9];
18+
temp = new int[7];
19+
for (int i = 0; i < 9; i++) {
20+
nums[i] = Integer.parseInt(br.readLine());
21+
}
22+
23+
24+
Arrays.sort(nums);
25+
26+
temp[0] = 0;
27+
dfs(0, temp, 0, 0);
28+
29+
}
30+
31+
private static void dfs(int idx, int[] temp, int sum, int cnt) {
32+
if (cnt == 7) {
33+
if (sum == 100) {
34+
for (int i = 0; i < 7; i++) {
35+
System.out.println(temp[i]);
36+
}
37+
exit(0);
38+
}
39+
return;
40+
}
41+
42+
for (int i = idx; i < 9; i++) {
43+
temp[cnt] = nums[i];
44+
dfs(i + 1, temp, sum + nums[i], cnt + 1);
45+
}
46+
}
47+
}

0 commit comments

Comments
 (0)