# BOJ11723 집합
https://www.acmicpc.net/problem/11723 (opens new window)
비어있는 공집합 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를 공집합으로 바꾼다.
# HashSet
# 제출 코드
HashSet을 활용하여 구현하였다. 아래는 최종 제출 코드이다.
import java.util.HashSet;
import java.util.Scanner;
public class BOJ11723 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuilder stringBuilder = new StringBuilder();
int m = scanner.nextInt();
HashSet<Integer> set = new HashSet<>();
while (m-- > 0) {
String command = scanner.next();
if (command.equals("all")) {
for(int i = 1; i <= 20; i++){
set.add(i);
}
continue;
} else if (command.equals("empty")) {
set.clear();
continue;
}
int number = scanner.nextInt();
if (command.equals("add")) {
set.add(number);
} else if (command.equals("remove")) {
set.remove(number);
} else if (command.equals("check")) {
if(set.contains(number)) {
stringBuilder.append("1\n");
} else {
stringBuilder.append("0\n");
}
} else if (command.equals("toggle")) {
if(set.contains(number)) {
set.remove(number);
} else {
set.add(number);
}
}
}
System.out.println(stringBuilder);
}
}
# 비트마스킹
// TODO