2798 블랙잭

박병주·2023년 1월 18일
0

알고리즘

목록 보기
1/6

import java.util.ArrayList;
import java.util.Scanner;

public class BlackJack {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList list = new ArrayList<Integer>();
        int result = 0;
        int temp = 0;
        int n = sc.nextInt();
        int m = sc.nextInt();
        for(int i =0; i<n ; i++){
            list.add(sc.nextInt());
        }
        
        for(int i = 0 ; i<n; i++){
            for(int j = 0; j<n; j++){
                for(int k = 0; k < n; k++){
                    if(i!=j && j!=k && k!=i){
                        temp=(Integer)list.get(i) + (Integer)list.get(j) + (Integer)list.get(k);
                        if(temp <= m){
                            if(result < temp){
                                result = temp;
                            }
                        }
                    }

                }
            }
        }
        System.out.println(result);
    }
}

N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오.

고려점

  • 카드의 합이 21을 넘지 않는
  • 3장의 카드를 골라야 한다.
  • 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다.
  1. 3장의 카드를 골라야 한다는 점에서 3개의 반복문이 필요.
  2. 3장의 카드는 중복 될 수 없기 때문에 for문의 증감 변수는 서로 중복되어서는 안된다.
    if(i!=j && j!=k && k!=i)
  3. 3장의 카드의 합이 M을 넘어서는 안된다.
    if(temp <= m){
profile
Developer

0개의 댓글