11723번: 집합백준/문제2023. 8. 7. 13:37
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/11723
언어 : Kotlin
문제 설명 :
비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.
- add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.
- remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.
- check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)
- toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)
- all: S를 {1, 2, ..., 20} 으로 바꾼다.
- empty: S를 공집합으로 바꾼다.
- 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.
- 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
- check 연산이 주어질때마다, 결과를 출력한다.
제한 사항 :
- 시간 제한 : 1.5초
- 메모리 제한 : 4MB (하단 참고)
- Java 8: 448 MB
- Java 8 (OpenJDK): 448 MB
- Java 11: 448 MB
- Kotlin (JVM): 448 MB
- C#: 64 MB
- Java 15: 448 MB
- F#: 64 MB
- Visual Basic: 64 MB
입출력 예 :
입력 | 출력 |
26 add 1 add 2 check 1 check 2 check 3 remove 2 check 1 check 2 toggle 3 check 1 check 2 check 3 check 4 all check 10 check 20 toggle 10 remove 20 check 10 check 20 empty check 1 toggle 1 check 1 toggle 1 check 1 |
1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 |
3 | 0 |
풀이 :
import java.io.*
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val hash = HashSet<Int>()
repeat(br.readLine().toInt()) {
val request = br.readLine().also {
if (it == "all" || it == "empty") {
hash.clear()
if (it == "all") (1..20).forEach { i -> hash.add(i) }
} else {
val (type, num) = it.split(" ")
when (type) {
"add" -> hash.add(num.toInt())
"remove" -> hash.remove(num.toInt())
"check" -> if (hash.contains(num.toInt())) bw.appendLine("1") else bw.appendLine("0")
"toggle" -> if (hash.contains(num.toInt())) hash.remove(num.toInt()) else hash.add(num.toInt())
}
}
}
}
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
11399번: ATM (0) | 2023.08.07 |
---|---|
11047번: 동전 0 (0) | 2023.08.07 |
1074번: Z (0) | 2023.08.04 |
1012번: 유기농 배추 (0) | 2023.08.04 |
1003번: 피보나치 함수 (0) | 2023.08.04 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!