본문 바로가기
Algorithm/백준 자바

백준 2309 자바

by 눈오는1월 2024. 1. 3.
728x90

<문제>

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

<풀이>

위 문제 같은 경우 9명 중에 7명을 뽑아야 하는 생각으로 접근해서 문제풀 수 있다. 그럴 경우 DFS를 이용해서 조합을 구현해서 문제를 풀 수 있으나, 더 쉬운 방식으로 9명 중에 2명을 빼는 방식으로도 문제를 풀 수 있다.

반복문 2개를 이용해서 2명을 선택해서 전체 합에서 2명의 합을 뺐을때 100일 경우 출력을 하면 된다.

 

<코드>

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] inputArr = new int[9];
        int sum = 0;

        for(int i = 0; i < 9; i++) { // 입력 및 입력한 값 합산
            inputArr[i] = Integer.parseInt(br.readLine());
            sum += inputArr[i];
        }
        for(int i = 0; i < 8; i++) { // 9명중에서 2명 뺀 사람의 합이 100일경우 찾기
            for(int j = i+1; j < 9; j++) {
                if (sum - inputArr[i] - inputArr[j] == 100) {
                    inputArr[i] = 0;
                    inputArr[j] = 0;
                    Arrays.sort(inputArr);
                    for(int k = 2; k < 9; k++) {
                        System.out.println(inputArr[k]);
                    }
                    return;
                }
            }
        }
    }
}
728x90

'Algorithm > 백준 자바' 카테고리의 다른 글

백준 11655 자바  (1) 2024.01.03
백준 1159 자바  (0) 2024.01.03
백준 10988 자바  (1) 2024.01.03
백준2979 자바  (2) 2024.01.03
백준 10808 자바  (1) 2024.01.03