알고리즘/백준 Baekjoon
백준 2309번 일곱 난쟁이(JAVA)
꾸준함
2023. 1. 16. 21:15
백준 2309번
https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
문제설명
9개의 값들 중 7개의 값이 합하여 100이 되는 경우의 수를 출력 하면 되는문제
> 브루트포스 알고리즘
접근
1. 9개중 7개를 뽑아서 100이 되야함 -> 9개중 2개를 뽑는것 과 같음.
2. 9개의 합에서 100을 뺀 값이 선택한 두개의 값이랑 같다면 해당 값을 0 으로 변경후 정렬(오름차순을 위해)
3. 인덱스 2번부터 9번까지 반복문을 돌며 출력.
코드
import java.io.*;
import java.util.*;
public class Main{
public static void main(String args[]) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int []num = new int[9];
int sum = 0;
for(int i=0;i<9;i++){
num[i] = Integer.parseInt(bf.readLine());
sum += num[i];
}
for(int i=0;i<8;i++){
for(int j=i+1;j<9;j++){
if(sum - (num[i] + num[j]) == 100){
num[i] = 0;
num[j] = 0;
Arrays.sort(num);
for(int k=2;k<9;k++){
System.out.println(num[k]);
}
return;
}
}
}
}
}
풀이
> 위 접근과 동일