ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[백준] 2309번 일곱난쟁이

SZCODE 2020. 8. 12. 20:15

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

문제 :
7명의 난쟁이 구하기

문제 풀이 : 
브루트 포스
먼저 9명의 난쟁이의 합계를 구한 뒤, 두명씩 묶어서 합계에서 두명을 뺐을 때 100이 되면 그 두명의 값을 0으로 바꾸고,
정렬한 뒤 0이 아닌 7명의 난쟁이를 구해주었다.

몰랐던 점 :
7명을 선택하는 것보다 2명을 제외 시키는 것이 빨랐다.
boolean 형을 잘 쓰자.
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[] arr = new int[9];
		int sum = 0;
		boolean check = false;
		for (int i = 0; i < 9; i++) {
			arr[i] = sc.nextInt();
			sum += arr[i];
		}
		
		for (int i = 0; i < 9; i++) {
			if(check == true) break;
			
			for (int j = 0; j < 9; j++) {
				if(i==j) continue;
				if(sum - arr[i] -arr[j] ==100) {
					arr[i] = 0;
					arr[j] = 0;
					check = true;
				}
			}
		}
		Arrays.sort(arr);
		for (int i = 0; i < 9; i++) {
			if(arr[i]!=0) {
				System.out.println(arr[i]);
			}
		}
	}

}