알고리즘/브루트포스(Brute Force)
[백준][2798] 블랙잭
금님은님아부지
2024. 4. 29. 16:09
728x90
https://www.acmicpc.net/problem/2798
문제 풀이
1. 3중 for 문을 이용하여 카드를 세 장 뽑는다.
2. 뽑은 세 장의 카드 합이 M 보다 작거나 같고 현재 result 값보다 크면 result 에 저장한다.
3. result 를 출력 한다.
코드
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>) {
val br = BufferedReader(InputStreamReader(System.`in`))
val (N, M) = br.readLine().split(" ").map { it.toInt() }
val numbers = br.readLine().split(" ").map { it.toInt() }.toIntArray()
// 세장의 카드를 가져와서 제일 합이 높을 것을 result 에 저장한다.
var result = Int.MIN_VALUE
for (i in 0 until N - 2) {
for (j in i + 1 until N - 1) {
for (k in j + 1 until N) {
if (numbers[i] + numbers[j] + numbers[k] <= M) {
result = Math.max(result, numbers[i] + numbers[j] + numbers[k])
}
}
}
}
println(result)
}
728x90