전공공부
[BOJ 11723] 집합 본문
비트 마스킹
^ 연산 -> 서로 반대 일 시 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);
}
}
'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 |