본문 바로가기
Java/백준

백준 2309번 - 일곱 난쟁이 (Java)

by 녹녹1 2024. 1. 20.


풀이 과정 - 1

  • 반복문을 돌면서 7명의 난쟁이의 키를 합했을 때 100이 되는 경우를 찾음 
  • 중첩된 반복문이 여러 개였기 때문에 빠져나갈 반복문명(라벨)을 정해두고 조건이 일치했을 때 한 번에 나감 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;

public class Main_2309 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] array = new int[9];
        for (int i = 0; i < 9; i++) {
            array[i] = Integer.parseInt(br.readLine());
        }

        ArrayList<Integer> arrayList = new ArrayList<>();
        loof: for (int i = 0; i < array.length - 6; i++) {
            for (int j = i + 1; j < array.length - 5; j++) {
                for (int k = j + 1; k < array.length - 4; k++) {
                    for (int l = k + 1; l < array.length - 3; l++) {
                        for (int m = l + 1; m < array.length - 2; m++) {
                            for (int n = m + 1; n < array.length - 1; n++) {
                                for (int o = n + 1; o < array.length; o++) {
                                    if (array[i] + array[j] + array[k] + array[l] + array[m] + array[n] + array[o] == 100) {
                                        arrayList.add(array[i]);
                                        arrayList.add(array[j]);
                                        arrayList.add(array[k]);
                                        arrayList.add(array[l]);
                                        arrayList.add(array[m]);
                                        arrayList.add(array[n]);
                                        arrayList.add(array[o]);
                                        break loof;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        int[] answer = arrayList.stream().mapToInt(i -> i).toArray();
        Arrays.sort(answer);
        for (int i = 0; i < answer.length; i++) {
            if (i == answer.length - 1) System.out.print(answer[i]);
            else System.out.println(answer[i]);
        }
    }
}

 

풀이 과정 - 2

  • 모든 난쟁이의 키를 다 더한 상태에서 난쟁이 2명의 키를 뺐을 때 100이 되는 경우를 찾음
package org.example;

import java.io.*;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] array = new int[9];
        int sum = 0;
        for (int i = 0; i < 9; i++) {
            array[i] = Integer.parseInt(br.readLine());
            sum += array[i];
        }
        int num1 = 0;
        int num2 = 0;

        loof:
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = i + 1; j < array.length; j++) {
                if (sum - array[i] - array[j] == 100) {
                    num1 = array[i];
                    num2 = array[j];
                    break loof;
                }
            }
        }
        Arrays.sort(array);
        for (int i : array) {
            if (i == num1 || i == num2) continue;
            System.out.println(i);
        }
        br.close();
    }
}

 

'Java > 백준' 카테고리의 다른 글

백준 1764 - 듣보잡  (0) 2024.01.25
백준 2851번 - 슈퍼 마리오 (JAVA)  (0) 2024.01.23
백준 2798번 - 블랙잭 (Java)  (0) 2024.01.19

댓글