백준

[Java] 백준 2798번 - 블랙잭

효재감자 2023. 7. 2. 14:20

문제 링크 : 백준 2798번 - 블랙잭 자바

 

brute-force 기법을 이용하여 푸는 것이므로 for문의 i, j, k의 범위만 적절히 조절해준 후 M이 넘지 않는 선에서 max값을 찾으면 된다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int N = input[0];
        int M = input[1];
        input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int max = 0;
        for (int i = 0; i < input.length - 2; i++) {
            for (int j = i + 1; j < input.length - 1; j++) {
                for (int k = j + 1; k < input.length; k++) {
                    int sum = input[i] + input[j] + input[k];
                    if (sum > max && sum <= M) max = sum;
                }
            }
        }
        System.out.println(max);
    }
}