상세 컨텐츠

본문 제목

Baekjoon(Kotlin) - 1920. 수 찾기

Problems(Kotlin)/Baekjoon

by KDLiam 2023. 9. 16. 10:30

본문

URL : https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

 

[ RESULT ]

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))

    val N = br.readLine().toInt()
    val arr = br.readLine().split(" ").map{ it.toInt() }.sorted()
    val M = br.readLine().toInt()
    val searchNums: List<Int> = br.readLine().split(" ").map{ it.toInt() }

    for(i in 0 until M) {
        bw.write("${BinarySearch(arr, searchNums[i], 0, arr.size-1)}\n")
    }


    br.close()
    bw.flush()
    bw.close()
}


fun BinarySearch(Arr: List<Int>, SearchNum: Int, Start: Int, End: Int): Int {
    if (Start > End) {
        return 0
    }

    val mid = (Start + End) / 2

    return if (Arr[mid] == SearchNum) {
        1
    } else if (Arr[mid] > SearchNum) {
        BinarySearch(Arr, SearchNum, Start, mid - 1)
    } else {
        BinarySearch(Arr, SearchNum, mid + 1, End)
    }
}

 

 이진 탐색을 구현한 후 수를 찾으면 1, 찾지 못하면 0을 반환하면 되는 문제.

관련글 더보기