백준 풀이/자바(Java)
백준 11723 자바 - 집합
콘스_
2024. 1. 24. 06:22
// 집합
package Silver_V_5;
import java.io.*;
import java.util.StringTokenizer;
public class Ex11723 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int m = Integer.parseInt(br.readLine());
String str;
int x = 0;
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
str = st.nextToken();
if (!(str.equals("all") || str.equals("empty"))) {
x = Integer.parseInt(st.nextToken());
}
switch (str) {
case "add": add(x); break;
case "remove": remove(x); break;
case "check": check(x); break;
case "toggle": toggle(x); break;
case "all": all(); break;
case "empty": empty(); break;
}
}
bw.flush();
bw.close();
}
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
static int s = 0;
private static void add(int x) {
s |= (1 << x);
}
private static void remove(int x) {
s &= ~(1 << x);
}
private static void check(int x) throws IOException {
if ((s & (1 << x)) == (1 << x)) {
bw.write(String.valueOf(1));
bw.newLine();
} else {
bw.write(String.valueOf(0));
bw.newLine();
}
}
private static void toggle(int x) {
s ^= (1 << x);
}
private static void all() {
s = (1 << 21) - 1;
}
private static void empty() {
s = 0;
}
}
비트마스킹을 처음 해봤다. 아직은 사용만 하고 이해가 잘 안 되지만, 다른 비트마스킹 문제도 풀다보면 익숙해질 것이다.