728x90
반응형
https://www.acmicpc.net/problem/11723
문제
문제 방향성
비트마스킹을 이용하면 쉽게 풀리는 문제이다.
몇번째 비트를 켜고 끄고 확인할지만 잘 해주면 된다.
참고
https://be-senior-developer.tistory.com/134
문제 풀이 시 주의점
아래 코드 안써주면 시간초과 난다.
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
코드 구현
#include <iostream>
#include <vector>
using namespace std;
long long int N;
int S = 0;
void calculate(string order, int num) {
if (order == "add") {
S |= (1 << num);
} else if (order == "remove") {
S &= ~(1 << num);
} else if (order == "check") {
if (S & (1 << num)) {
cout << 1 << "\n";
} else {
cout << 0 << "\n";
}
} else if (order == "toggle") {
S ^= (1 << num);
} else if (order == "all") {
S = (1 << 21) - 1;
} else if (order == "empty") {
S = 0;
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N;
string order;
int num;
for (int i = 0; i < N; i++) {
cin >> order;
if (order == "add" || order == "remove" || order == "check" || order == "toggle") {
cin >> num;
} else {
num = 0; // "all"과 "empty" 명령어를 위한 기본값
}
calculate(order, num);
}
return 0;
}
반응형
'백준 문제풀이' 카테고리의 다른 글
[비트마스킹][완전 탐색] 14391 종이 조각 c++구현 (0) | 2024.07.20 |
---|---|
[백준][union find] 1976 여행가자 c++구현 (0) | 2024.07.19 |
[비트마스킹][bfs] 2234 성곽 c++구현 (0) | 2024.07.16 |
[백준][비트마스킹] 1094 막대기 c++ 구현 (0) | 2024.07.15 |
[백준][완전탐색] 1062 가르침 c++ 구현 (0) | 2024.07.14 |