Java/백준
백준 2309번 - 일곱 난쟁이 (Java)
녹녹1
2024. 1. 20. 01:53
풀이 과정 - 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();
}
}