[BOJ] 10815번 : 숫자 카드

문제 보기

소스

kotlin

이분 탐색 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Scanner

var n = 0
var m = 0
lateinit var a: IntArray
lateinit var b: IntArray

fun main() {
init()
a.sort()
b.forEach {
print("${binarySearch(it)} ")
}
}

fun binarySearch(target: Int): Int {
var st = 0
var en = n - 1

while (st <= en) {
val mid = (st + en) / 2
when {
a[mid] > target -> en = mid - 1
a[mid] < target -> st = mid + 1
else -> return 1
}
}
return 0
}

fun init() = with(Scanner(System.`in`)) {
n = nextInt()
a = IntArray(n)
for (i in 0 until n) {
a[i] = nextInt()
}
m = nextInt()
b = IntArray(m)
for (i in 0 until m) {
b[i] = nextInt()
}
}

kotlin.collections의 binarySearch 사용

  • JVM을 기반으로 하는 코틀린에서의 컬렉션은 자바에서 제공하는 클래스들을 그대로 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner

var n = 0
var m = 0
lateinit var a: IntArray
lateinit var b: IntArray

fun main() {
init()

a.sort()
b.forEach {
if (a.binarySearch(it) < 0) print("0 ")
else print("1 ")
}
}

fun init() = with(Scanner(System.`in`)) {
n = nextInt()
a = IntArray(n)
for (i in 0 until n) {
a[i] = nextInt()
}
m = nextInt()
b = IntArray(m)
for (i in 0 until m) {
b[i] = nextInt()
}
}

댓글