CS/Algorithm

[ JAVA / 백준 : 11723] 집합

yujindonut 2021. 7. 30. 10:13
728x90

https://www.acmicpc.net/problem/11723

비트마스크를 이용하지 않으면 시간초과가 나는 문제

비트 마스크 ..어렵다

import java.util.*;

// 집합
public class Main {
   
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      StringBuilder sb = new StringBuilder();
      int m = sc.nextInt();  // 연산 수
      Set<Integer> set = new HashSet<>(); // 중복 허용 X
      
      for (int i = 0; i < m; i++) {
         String cal = sc.next();
         int x = 0;
         
         switch (cal) {
            case "add" :
               x = sc.nextInt();
               set.add(x);
               break;   
            case "remove" :
               x = sc.nextInt();
               set.remove(x);
               break;
            case "check" :
               x = sc.nextInt();
               if (set.contains(x))
                  sb.append("1\n");
               else
                  sb.append("0\n");
               break;
            case "toggle" :
               x = sc.nextInt();
               if (set.contains(x))
                  set.remove(x);
               else
                  set.add(x);
               break;   
            case "all" :
               for (int k = 0; k < 20; k++) {
                  set.add(k + 1);
               }
               break;
            case "empty" :
               set.clear();
               break;               
         }
      }

      System.out.print(sb.toString());
      sc.close();
   }
}

참고 https://hongjuzzang.github.io/bitmask/bit_mask/

 

[java] 비트 마스크

비트 연산 도전기

hongjuzzang.github.io

 

 

728x90