[백준] 카드 뽑기 (16204)(kotlin)

원본 문제

문제 설명

앞 면에 O와 X가 적혀있는 카드 N개가 있다. N개의 카드 중 M개의 카드의 앞면에는 O가 한 개 적혀있고, 나머지 N-M개의 카드의 앞면에는 X가 한 개 적혀있다. 카드의 뒷 면은 두 종류의 카드 모두 같은 모양이라 구분할 수 없다.

카드의 뒷 면에 O나 X를 하나씩 적으려고 한다. 이 때, O는 K개, X는 N-K개 적으려고 한다.

앞 면과 뒷 면에 같은 모양이 적혀있는 카드의 최대 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N, M, K가 주어진다. (1 ≤ N ≤ 1,000,000, 0 ≤ M, K ≤ N)

출력

첫째 줄에 앞 면과 뒷 면에 같은 모양이 적혀있는 카드의 최대 개수를 출력한다.

테스트 케이스

입력 출력
4 3 2 3
10 0 10 0
5 3 3 5
7 5 2 4

문제 풀이1

import java.util.Scanner
import kotlin.math.min

fun main(args: Array<String>) {
    val sc = Scanner(System.`in`)
    val (n, m, k) = (0..2).map { sc.nextInt() }

    val fX = n - m
    val bX = n - k

    val o = min(m, k)
    val x = min(fX, bX)

    if (o == x) println(o + x)
    else println(min(k, m) + min(fX, bX))
}