본문 바로가기

알고리즘/브루트포스(Brute Force)

[백준][2798] 블랙잭

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

'알고리즘 > 브루트포스(Brute Force)' 카테고리의 다른 글

[백준][2231] 분해 합  (0) 2024.05.02