여니의 취준 준비/코딩테스트 (Java)

[3040] 백설 공주와 일곱 난쟁이 in Java

여니's 2022. 8. 11. 17:13

https://www.acmicpc.net/problem/3040

 

3040번: 백설 공주와 일곱 난쟁이

매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.

www.acmicpc.net


문제 요약

의자 , 접시, 나이프 : 7개
난쟁이 : 9명 (진짜 난쟁이는 7명)
모자 100보다 작은 양의 정수가 적혀있다. (진짜 난쟁이)
일곱 난쟁이의 모자에 쓰여있는 숫자의 합 == 100

 

 

접근 방식

- 순열을 이용해서 아홉 난쟁이 중에 일곱 난쟁이를 골라냈다.

- 그리고 골라낸 난쟁이가 진짜인지 확인 

- 진짜라면 answer 배열에 일곱 난쟁이 넣기

 

 

 

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package day_0810;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class n3040 {
    static int[] array;
    static int[] answer;
    static int[] temp;
    static boolean[] visited;
    public static void makeFunc(int cnt, int sum) {
        if (cnt==7) {
            if (sum==100) {
                for (int i = 0; i < 7; i++) {
                    answer[i]=temp[i];
                }
            }
            return;
        }
        for (int i = 0; i < 9; i++) {
            if (visited[i]) continue;
            visited[i]=true;
            temp[cnt]=array[i];
            makeFunc(cnt+1, sum+array[i]);
            visited[i]=false;
            temp[cnt]=0;
        }
    }
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        array= new int[9];
        visited= new boolean[9];
        temp=new int[7]; 
        answer=new int[7]; 
 
        for(int i=0; i<9; i++) {
            array[i]=Integer.parseInt(br.readLine());
        }
        makeFunc(0,0);
        StringBuilder sb= new StringBuilder();
        for (int i = 0; i < 7; i++) {
            sb.append(answer[i]+"\n");
        }
        System.out.println(sb);
    }
}
cs

'여니의 취준 준비 > 코딩테스트 (Java)' 카테고리의 다른 글

[*11286*] 절댓값 힙 in Java  (0) 2022.08.12
[15686] 치킨 배달 in Java  (0) 2022.08.12
[*16637*] 괄호 추가하기 in Java  (0) 2022.08.11
[1074] Z in Java  (0) 2022.08.11
[2839] 설탕 배달 in Java  (0) 2022.08.11