본문 바로가기
알고리즘/백준

백준 2798번 블랙잭 자바 java

by 클로드 2021. 4. 8.
반응형

문제

 

풀이

 

3중 for문으로 3개의 카드의 합을 구한다

카드의 합과 M값이 같다면 바로 리턴

카드의 합이 M값을 넘어간다면 넘어가고

카드의 합이 M값에 가까운 것을 비교해서 리턴해주는 것으로 해결하였다

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        int[] card = new int[N];

        for (int i = 0; i < N; i++) {
            card[i] = sc.nextInt();
        }

        System.out.println(blackJack(card, M));
    }

    public static int blackJack(int[] card, int M) {
        int max = M;

        for (int i = 0; i < card.length - 2; i++) {
            for (int j = i + 1; j < card.length - 1; j++) {
                for (int k = j + 1; k < card.length; k++) {
                    int sum = card[i] + card[j] + card[k];

                    if (M == sum) {
                        return sum;
                    }

                    if (M < sum) {
                        continue;
                    }

                    if (max > M - sum) {
                        max = M - sum;
                    }
                }
            }
        }

        return M - max;
    }
}

 

출처

www.acmicpc.net/problem/2798

 

반응형

댓글