[백준/자바] 2798번: 블랙잭

수박강아지·2025년 9월 15일

BAEKJOON

목록 보기
130/174

문제

https://www.acmicpc.net/problem/2798

풀이

  • N장의 카드 중 3장의 카드를 고른다.
  • 고른 카드의 합이 M을 넘지 않으면서 최대한 가깝게 만들어 출력

브루트 포스(Brute-Force) 문제입니다.
모든 카드를 탐색하여 3장씩 골라 m을 넘지 않는 값들 중 최댓값을 찾으면 됩니다.

코드


import java.util.*;
import java.io.*;

public class Main {
	static int n, m, answer;
	static int[] cards;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());
		
		st = new StringTokenizer(br.readLine());
		cards = new int[n];
		for (int i = 0; i < n; i++) {
			cards[i] = Integer.parseInt(st.nextToken());
		}
		
		answer = 0;
		for (int i = 0; i < n - 2; i++) {
			for (int j = i + 1; j < n - 1; j++) {
				for (int k = j + 1; k < n; k++) {
					if (cards[i] + cards[j] + cards[k] > m) continue;
					answer = Math.max(answer, cards[i] + cards[j] + cards[k]);
				}
			}
		}
		System.out.println(answer);
	}
}

0개의 댓글