알고리즘
[알고리즘 / 백준] 2798 - 블랙잭
DevBee
2020. 11. 8. 14:12
문제는 위와 같으며 우선 주어지는 카드의 수가 100 이하이기 때문에 단순하게 모든 경우의 수를 다 구하는 3중 for 문을 사용하여 문제를 풀었습니다.
파이썬 코드는 다음과 같습니다.
from sys import stdin
N, M = map(int, stdin.readline().split())
cards = list(map(int, stdin.readline().split()))
result = 0
length = len(cards)
for i in range(length):
for j in range(i+1, length):
for k in range(j+1, length):
tmp = cards[i] + cards[j] + cards[k]
if M >= tmp > result:
result = tmp
print(result)
자바 코드는 다음과 같습니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] nm = br.readLine().split(" ");
int N = Integer.parseInt(nm[0]);
int M = Integer.parseInt(nm[1]);
int[] cards = new int[N];
String[] inputs = br.readLine().split(" ");
for (int i = 0; i < cards.length; i++) {
cards[i] = Integer.parseInt(inputs[i]);
}
int result = 0;
for (int i = 0; i < cards.length; i++) {
for (int j = i + 1; j < cards.length; j++) {
for (int k = j + 1; k < cards.length; k++) {
int sum = cards[i] + cards[j] + cards[k];
if (sum <= M && sum > result) {
result = sum;
}
}
}
}
System.out.println(result);
}
}