본문 바로가기
이론/Data Structure , Algorithm

[210915] 백준 2798번 문제 풀이 / 블랙잭

by 6161990 2021. 9. 15.

 

 

 

문제의 핵心

1. 카드 중 3개씩 뽑는 모든 경우의 수 = n(n-1)(n-2) / 3! (팩토리얼) ex) C(5,3) = 5 x 4 x 3 / 3 x 2 x 1 = 10
2. 삼중 반복문을 통해 모든 경우의 수를 확인하기

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Q2_2798 {

    public static void main(String[] args) throws IOException {
             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
             StringTokenizer st = new StringTokenizer(br.readLine(), " ");

             int N = Integer.parseInt(st.nextToken());
             int M = Integer.parseInt(st.nextToken());

             int[] arr = new int[N];
             st = new StringTokenizer(br.readLine(), " ");

             for(int i=0; i< N; i++) {
                     arr[i] = Integer.parseInt(st.nextToken());
             }

             int result = 0;
             int sum_value = 0;

             for(int i=0; i<N; i++) {
                   for(int j=i+1; j<N; j++) {
                         for(int k=j+1; k<N; k++) {
                                sum_value = arr[i] + arr[j] + arr[k];
                                if(sum_value <= M) {
                                     result = Math.max (result, sum_value);
                                 }
                         }
                   }
             }

             System.out.println(result);

     }

}