ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 2309] - [분할정복] 일곱 난쟁이 - JAVA
    알고리즘/분할정복(Divide and conquer) 2018. 11. 30. 10:56

    문제 링크 : https://www.acmicpc.net/problem/2309




    이문제는 의도하는바만 잘 파악하면 어렵지 않게 문제를 풀 수 있다. 


    입력은 무조건 9명의 난쟁이애 대한 키 정보이고 

    두명을 제외한 나머지의 키의 합이 무조건 100이 된다고 한다. 

    가능한 답이 여러가지일 경우 아무거나 출력하면 된다고하는데 이럴때는 100이 이루어지면 바로 종료시키고 출력시키면 된다. 


    문제를 푸는 방법은 두 난쟁이의 키를 전체 아홉 난쟁이 키의 총합에서 뺀 값이 100이면 두 난쟁이의 값을 최소 값으로 변경 시킨 후 정렬하고 출력시키면 된다. 

    일곱 난장이들의 키를 합하는 것보다 전체 합에서 두명의 키만 뺴는것이 더 바람직할것이기떄문에 두 난쟁이의 키만 빼면 된다. 


    소스

    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
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
     
    public class Main {
        
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int max = 100;
            int size = 9;
            int sum = 0;
            int[] dwarfs = new int[size];
            
            for(int i=0; i < size; i++) {
                dwarfs[i] = Integer.parseInt(br.readLine());
                sum += dwarfs[i];
            }
            
            boolean checked = false;
            for(int i=0; i < size; i++) {
                for(int j = i+1; j < size; j++) {
                    if(sum - (dwarfs[i] + dwarfs[j]) == max) {
                        dwarfs[i] = Integer.MIN_VALUE;
                        dwarfs[j] = Integer.MIN_VALUE;
                        checked = true;
                        break;
                    }
                    if(checked) break;
                }
            }
            Arrays.sort(dwarfs);
            
            for(int dwarf:dwarfs) if(dwarf != Integer.MIN_VALUE) System.out.println(dwarf);
            
            br.close();
        }
    }
    cs


    댓글

Designed by Tistory.