# 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 (opens new window)

# 제출 코드

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
#BOJ #구현 #비트마스킹 #TODO
last updated: 10/17/2021, 3:54:43 PM