[백준] 마지막 한마디 (1813)(kotlin)

문제 설명

백준 1813번 문제 링크

입력 및 출력

» 입력

첫째 줄에 항승이가 한 말의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 둘째 줄에 항승이가 한 말에 등장하는 정수가 주어진다. 항승이가 말한 수는 100,000보다 작거나 같은 음이 아닌 정수이다.

» 출력

첫째 줄에 항승이가 한 말 중 몇 개가 참인지 출력한다. 만약 항승이가 한 말이 모순이라면 -1을 출력한다. 만약 가능한 답이 여러개이면 가장 큰 값을 출력한다.

예제 입출력(테스트케이스)

입력 출력
4
0 1 2 3
1

문제 풀이1

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    var arr = IntArray(1_000_001) { 0 }
    val N = Integer.parseInt(readLine())
    val persons = readLine().split(" ").map { it.toInt() }
    var noOne = false

    for (person in persons) {
        arr[person]++
    }

    for (i in N downTo 0) {
        if (arr[i] == i) {
            println(i)
            noOne = true
            break
        }
    }

    if (!noOne) println(-1)
}