본문 바로가기

ALGORITHM

백준 2309 일곱 난쟁이 (Java)

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);
	}
}

 

'ALGORITHM' 카테고리의 다른 글

백준 3052 나머지 (Java)  (0) 2023.01.17
백준 2869 달팽이는 올라가고 싶다 (Java)  (0) 2023.01.16
백준 1181 단어 정렬 (Java)  (0) 2023.01.15
백준 10828 스택 (Java)  (0) 2023.01.14
백준 2839 설탕배달 (Java)  (1) 2023.01.12