https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net

Brute Force를 이용해 풀이해보았다:)
package com.bruteforce;
import java.io.*;
import java.util.*;
public class B2798 {
static int N, M; // 카드의 갯수, 기준이 되는 숫자
static int[] card; // 카드 숫자
static int max; // 기준이 되는 숫자에 가장 근접한 숫자
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
card = new int[N];
// 카드 숫자 입력받기
st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
card[i] = Integer.parseInt(st.nextToken());
}
// max값 초기화
max = 0;
// 각 카드는 중복사용이 불가능
for(int i=0; i<N-2; i++) { // 1번 카드
for(int j=i+1; j<N-1; j++) { // 2번 카드
for(int k=j+1; k<N; k++) { // 3번 카드
int sum = card[i] + card[j] + card[k]; // 숫자의 합
if(sum <= M && sum > max) { // 숫자의 합이 M보다 작거나 같고 max보다 클때
max = sum; // max값 갱신
}
}
}
}
System.out.println(max);
}
}