
package buffer;
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int sum = 0;
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int [] arr = new int [N];
for(int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
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++) {
int i1 = arr[i] + arr[j] + arr[k];
if(M >= i1 && sum < i1) {
sum = i1;
}
}
}
}
System.out.println(sum);
}
}
문제를 보면 배열에서 세 가지의 숫자를 뽑아서 합이 M과 가장 가까운 합을 출력하는 것이다.
중복되지 않게 3개를 뽑아야 한다.
반복문 3개를 사용해서 중복되지 않고 3개를 뽑는 코드를 작성했다.
M을 넘지 않고, sum(초기값 0)보다 크다면 업데이트 하는 식으로 조건식을 작성했다.