본문 바로가기
java

백준 2789 블랙잭 java 자바

by MiaCoder 2024. 1. 16.

아이디어 :

 

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);

    }
}