[백준] 2798 : 블랙잭 <JAVA>

 


카드와 자연수 M이 주어졌을 때, 카드 3장을 골라 M을 초과하지 않는 제일 가까운 수를 구하는 프로그램

- 브루트 포스 알고리즘

 

<구현 순서>

  1. 카드 수와 자연수 M 입력
  2. 카드 번호 입력
  3. 3개씩 뽑을 수 있는 조합을 검사하며 max_sum 구하기 [ 조건: max_sum <= M ]
  4. max_sum 출력

 

import java.util.Scanner;
public class Main {
 
	public static void main(String[] args){
    Scanner sc = new Scanner(System.in);

    //Step1. Enter the number of cards and M
    int num = sc.nextInt();
    int M = sc.nextInt();
    int[] card = new int[num];

    //Step2. Enter the card number
    for(int i =0;i <num;i++)
      card[i]=sc.nextInt();

    //Step3. Find max_sum
    int max_sum = 0, sum;
    for(int one=0; one < num -2; one++)
      for(int two= one+1; two < num -1; two++)
        for(int three= two+1; three < num; three++){
          sum = card[one] + card[two] + card[three];
          if(sum <= M && max_sum < sum){
            max_sum = sum;

            if(max_sum == M){
              System.out.println(max_sum);
              return;
            }

          }

        }

    //Step4. Print result
    System.out.println(max_sum);
    
  }
}