ALGORITHM
백준 2309 일곱 난쟁이 (Java)
공부하는_다온
2023. 1. 13. 23:08
1. 문제 링크
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
2. 문제 및 입출력 예제
3. 문제 풀이
일곱명이라는 단어에 꽂히는 게 아니라
총 합에서 차를 뺀다고 생각했다.
아홉 난쟁이의 키를 다 합치고 100만큼 뺄 때 남은 값이
일곱 난쟁이가 아니었던 두 명의 키의 합이다.
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int[] height = new int[9];
int sum = 0;
for(int i=0; i<9; i++) {
String key = br.readLine();
height[i] = Integer.parseInt(key);
sum += height[i];
}
Arrays.sort(height); //오름차순 정렬
int temp = 0;
int num1=0, num2=0;
boolean stop = false;
for(int i=0;i<8;i++) {
for(int j=1;j<9;j++) {
if(i!=j) //i와 j가 달라야 함
temp = height[i]+height[j];
if(sum - temp == 100 ) { //전체 합에서 두 키의 합을 뺐을 때 100
num1 = i;
num2 = j;
stop = true;
break;
}
}
if(stop) break;
}
for(int i=0;i<9;i++) { //출력
if(i!=num1 && i!=num2) {
sb.append(height[i]+"\n");
}
}
System.out.println(sb);
}
}