반응형
https://www.acmicpc.net/problem/11723
풀이
:
add는 or 연산이므로 |=
remove는 not 입력값과 and연산이므로 &= !(INPUT)
toggle xor 연산이므로 ^=
을 하면 된다.
1. Python
import sys
sett = 0
inpt = sys.stdin.readline
for _ in range(int(inpt())):
comand = inpt().split()
if comand[0] == 'add' :
sett |= (1<<int(comand[1]))
elif comand[0] == 'remove':
sett &= ~(1<<int(comand[1]))
elif comand[0] == 'check':
if sett & (1<<int(comand[1])):
print(1)
else : print(0)
elif comand[0] == 'toggle':
sett ^= (1<<int(comand[1]))
elif comand[0] == 'all':
sett = (1<<21)-1
elif comand[0] == 'empty':
sett = 0
2. C++
#include <iostream>
using namespace std;
int main() {
int N, val;
string cmd;
int sett = 0;
ios::sync_with_stdio(0); cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) {
cin >> cmd;
if (cmd == "add") {
cin >> val;
sett = sett | (1 << val);
}
else if (cmd == "remove") {
cin >> val;
sett &= ~(1 << val);
}
else if (cmd == "check") {
cin >> val;
if (sett & (1 << val)) cout << 1 << '\n';
else cout << 0 << '\n';
}
else if (cmd == "toggle") {
cin >> val;
sett ^= (1 << val);
}
else if (cmd == "empty") sett = 0;
else sett = (1 << 21) - 1;
}
return 0;
}
728x90
반응형
'개발 > Algorithm 문제 풀이' 카테고리의 다른 글
[Python] 1793 타일링 DP (0) | 2020.08.31 |
---|---|
[Python] 비트마스킹 정리 (0) | 2020.08.28 |
[Python] 비트마스킹 - 1094 막대기 (0) | 2020.08.28 |
[Python] 카카오 2019 - 블록 게임 (0) | 2020.08.19 |
[Python] 카카오 2018 - 방금 그 곡 (0) | 2020.08.19 |