[백준] 2798

ninano05·2026년 3월 31일

부르트 포스(완전 탐색)

  • 가능한 합의 가짓수를 모두 계산해서, M과 미만의 최대값을 구한다.
  • 3개의 중첩 반복문 사용
import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        int max = 0;
        int[] card = new int[n];

        st = new StringTokenizer(br.readLine(), " ");
        for(int i=0; i<n; i++) {
            card[i] = Integer.parseInt(st.nextToken());
        }

        int sum = 0;
        for(int i=0; i<n-2; i++) {
            for(int j=i+1; j<n-1; j++) {
                for(int k=j+1; k<n; k++) {
                    sum = card[i]+card[j]+card[k];
                    if(m >= sum) {
                        if(sum > max) max = sum;
                    }
                }
            }
        }

        bw.write(max+"");
        bw.flush();
        bw.close();
        br.close();
    }
}
profile
초보 개발자

0개의 댓글