java
백준 2789 블랙잭 java 자바
MiaCoder
2024. 1. 16. 09:52
아이디어 :
1. 경우의 수를 구하는 방법을 고려해 반복문의 범위를 생각해 보자
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
// 배열 A와 숫자 n을 입력받는다.
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int arr[] = new int[N];
int ansMax = 0;
// 조건을 만족하는 여러개의 ans 중 가장 큰 값을 저장
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
// 입력받은 숫자를 배열에 저장.
//N장의 카드 중 3장의 카드를 뽑는 경우의 수를 생각해 보자
// N * (N-1) * (N-2)이다. 이 방법을 활용한다.
for (int i = 0; i < N - 2; i++) {
// 3번째로 뽑기 때문에 N-2까지 반복
for (int j = i + 1; j < N - 1; j++) {
// 2번째로 뽑기에 N-1까지 반복
for (int k = j + 1; k < N; k++) {
int ans = arr[i] + arr[j] + arr[k];
if ((ans) <= M) {
ansMax = Math.max(ans, ansMax);
k번째 반복문을 통해 ans중 가장 큰 값을 ansMax에 저장한다.
}
}
}
}
System.out.print(ansMax);
}
}