본문 바로가기
  • 개발하는 곰돌이
Algorithm/BOJ

[Kotlin] 백준 11723 : 집합

by 개발하는 곰돌이 2022. 12. 5.

문제 링크

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net


 


문제 해설

단순한 구현 문제지만 메모리 제한이 매우 적다. 주어지는 입력의 수가 1부터 20까지밖에 되지 않으므로 크기가 21인 Byte 배열을 만들어서 구현하였다.(0 : 배열에 없음, 1 : 배열에 있음)


Code

import java.util.StringTokenizer

fun main() = with(System.`in`.bufferedReader()) {
    val bw = System.out.bufferedWriter()
    val s = ByteArray(21)
    var st: StringTokenizer
    repeat(readLine().toInt()) {
        st = StringTokenizer(readLine())
        when (st.nextToken()) {
            "add" -> s[st.nextToken().toInt()] = 1
            "remove" -> s[st.nextToken().toInt()] = 0
            "check" -> bw.write(if (s[st.nextToken().toInt()] == 1.toByte()) "1\n" else "0\n")
            "toggle" -> st.nextToken().toInt().let { n -> s[n] = if (s[n] == 1.toByte()) 0 else 1}
            "all" -> for (i in s.indices) s[i] = 1
            "empty" -> for (i in s.indices) s[i] = 0
        }
    }
    bw.close()
}

'Algorithm > BOJ' 카테고리의 다른 글

[Kotlin] 백준 2563 : 색종이  (0) 2022.12.07
[Kotlin] 백준 11286 : 절댓값 힙  (0) 2022.12.06
[Kotlin] 백준 5430 : AC  (1) 2022.12.04
[Kotlin] 백준 7662 : 이중 우선순위 큐  (1) 2022.12.04
[Kotlin] 백준 1654 : 랜선 자르기  (0) 2022.12.03

댓글