[백준] 카드 뽑기 (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))
}