[백준 | Java] 2309 일곱 난쟁이

알린·2024년 1월 22일

baekjoon

목록 보기
20/68

내 풀이

이 문제는 완전 탐색 문제로, 부르트 포스 기법을 이용해 풀었다.

완전 탐색

  • 모든 경우의 수를 전부 다 체크해서 정답을 찾는 방법
  • 아래 5가지 방법으로 풀이 가능

부르트 포스 기법

  • 반복문 or 조건문을 활용해 모두 테스트

순열

  • n개의 원소 중에서 r개의 원소를 중복 허용 없이 나열하는 방법

재귀호출

비트마스크

  • 2진수 표현 기법을 활용

BFS, DFS 활용

구현 아이디어는 다음과 같다.

  1. 9명 키의 합 구하기
  2. 이중 for문을 이용해 9명 중 2명의 키를 빼보고, 가장 먼저 합이 100이 되는 경우를 오름차순으로 정리해서 반환
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] height = new int[9];
        int sum = 0;

        for (int i = 0; i < height.length; i++) {
            height[i] = Integer.parseInt(br.readLine());
            sum += height[i];
        }

        for (int i = 0; i < height.length - 1; i++) {
            for (int j = i+1; j < height.length; j++) {
                if (sum - height[i] - height[j] == 100) {
                    height[i] = 0;
                    height[j] = 0;
                    Arrays.sort(height);
                    for (int k = 2; k < height.length; k++) {
                        System.out.println(height[k]);
                    }
                    return;
                }
            }
        }
    }
}

profile
짱이 되고싶은 개발 기록

0개의 댓글