-
[BOJ]백준 11723번: 집합/BitmaskProblem Solving/BOJ(백준) 2021. 1. 18. 23:31
수업 때 비트마스킹 언급된 기념으로 풀어본 비트마스킹 문제
비트 연산을 연습해볼 수 있는 좋은 문제였다 !!
1️⃣ 특정 bit(n bit)을 1로 바꾸고 싶을 때
bit |= (1<<n)
2️⃣ 특정 bit(n bit)을 0으로 바꾸고 싶을 때
bit &= ~(1<<n)
3️⃣ 특정 bit(n bit)을 toggle하고 싶을 때(1은 0으로, 0은 1로)
bit ^= (1<<n)
4️⃣ 모든 bit을 1로 바꾸고 싶을 때
bit |= (1<<n+1) - 1
5️⃣ 모든 bit을 0으로 바꾸고 싶을 때
bit &= 0
위의 다섯 가지 연산을 활용해주면 끝 ~~
import sys m=int(sys.stdin.readline().strip()) bit=0 while m!=0: a=sys.stdin.readline().strip() m-=1 if a=='all': bit=(1<<21)-1 continue elif a=='empty': bit=0 continue a,b=map(str,a.split(" ")) b=int(b) if a=='add': bit|=(1<<b) elif a=='remove': bit&=~(1<<b) elif a=='check': print('1' if (bit>>b)&1==1 else '0') elif a=='toggle': bit^=(1<<b)
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]백준 1442번: 벽 부수고 이동하기 2/BFS (0) 2021.01.20 [BOJ]백준 1600번: 말이 되고픈 원숭이/BFS (0) 2021.01.20 [BOJ]백준 17928번: 오큰수/Stack (2) 2021.01.13 [BOJ]백준 1493번: 박스 채우기/DivideAndConquer (0) 2021.01.12 [BOJ]백준 11060번: 점프 점프 (0) 2021.01.09