publicstaticvoidmain(String[] args)throws NumberFormatException, IOException { // 내가 배운 비트마스크는 0~N-1 까지의 수를 저장하고 있기 때문에 // 이 문제를 풀기 위해서는 입력으로 받은 수를 모두 1을 빼주고 0~19로 만든 다음에 구현하면 된다. // 왜냐하면 문제에서 집합에 추가할 수 있는 x의 범위가 1~20이기 때문에 내가 배운 비트마스크의 범위인 0~N-1을 맞추기 위해서 // 입력받은 집합에서 1씩 빼주어 0~19 사이의 범위로 맞춘다. BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int N = 20; int s = 0; // 처음에 비어있는 집합 생성 int M = Integer.parseInt(bf.readLine()); // test_case StringBuilder sb = new StringBuilder(); for(int i=0;i<M;i++) { StringTokenizer st = new StringTokenizer(bf.readLine(), " "); String command = st.nextToken(); if(command.equals("add")) { int x = Integer.parseInt(st.nextToken()); x--; s = s | (1<<x); } elseif(command.equals("remove")) { int x = Integer.parseInt(st.nextToken()); x--; s = s & ~(1<<x); } elseif(command.equals("check")) { int x = Integer.parseInt(st.nextToken()); x--; int tmp = s & (1<<x); if(tmp !=0) { sb.append("1"); sb.append("\n"); } else { sb.append("0"); sb.append("\n"); } } elseif(command.equals("toggle")) { int x = Integer.parseInt(st.nextToken()); x--; s = s ^ (1<<x); } elseif(command.equals("all")) { s = (1<<N) - 1; } elseif(command.equals("empty")) { s = 0; } } System.out.println(sb.toString()); }