Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

전공공부

[BOJ 11723] 집합 본문

Study/Problem Solving

[BOJ 11723] 집합

monitor 2023. 7. 26. 00:31

비트 마스킹

 

^ 연산 -> 서로 반대 일 시 1을 출력함

0^0 = 0

0^1 = 1

1^0 = 1

1^1 = 0

 

| 연산 -> 1이 하나라도 있을시 1출력

1|1 = 1

1|0 = 1

0|1 = 1

0|0 = 0

 

& 연산 -> 둘다 같을 시 1 출력

 

<< , >> 쉬프트 연산

1 << 2 -> (100(이진수) => 4)

4 >>2 -> (1(이진수) => 1)

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_11723_집합 {
    public static void main(String[] args) throws IOException {

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer tk = new StringTokenizer(in.readLine(), " ");

        int M = Integer.parseInt(tk.nextToken());

        String token = "";

        int S = 0;
        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < M; i++){
            tk = new StringTokenizer(in.readLine(), " ");
            token = tk.nextToken();

            if(token.equals("all")){
                S = (1 << 21) - 1;
            }
            else if(token.equals("empty")){
                S = 0;
            }else{
                int num = Integer.parseInt(tk.nextToken());
                if(token.equals("add")){
                    S |= (1 << num);
                }else if(token.equals("remove")){
                    int temp = 1 << num;
                    temp = ~temp;
                    S &= temp; 
                }else if(token.equals("check")){
                    int temp = 1 << num;
                    if((S & temp) != 0){
                        sb.append(1).append("\n");
                    }else{
                        sb.append(0).append("\n");
                    }
                }else if(token.equals("toggle")){
                    int temp = 1 << num;
                    S^=temp;
                }
            }
        }
        System.out.println(sb);
    }
}

 

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

'Study > Problem Solving' 카테고리의 다른 글

[BOJ 10431] 줄 세우기  (0) 2023.07.30
[BOJ 9655] 돌 게임  (0) 2023.07.26
[BOJ 2292] 벌집  (0) 2023.07.24
[BOJ 5073] 삼각형과 세 변  (0) 2023.07.23
[BOJ 23971] ZOAC4  (0) 2023.07.22