반응형
1.문제
https://www.acmicpc.net/problem/11723
2. 풀이
비트마스크
3. 구현
import sys
# sys.stdin=open('input.txt')
M = int(sys.stdin.readline())
bit=0
while M:
M-=1
cmd = sys.stdin.readline().split()
if len(cmd)==1:
c = cmd[0]
else:
c = cmd[0]
n = int(cmd[1])-1
if c=='add':
bit = bit|(1<<n)
elif c=='remove':
bit = bit& ~(1<<n)
elif c=='check':
if bit & (1<<n)==0:
print(0)
else:
print(1)
elif c=='toggle':
bit = bit^(1<<n)
elif c=='all':
bit = (1<<20)-1
else: # empty
bit =0
4. 테스트케이스 정리
@djm03178
2
all
check 20
정답: 1
@houma757
2
remove 1
check 1
정답: 0
주의해야할 점:
n을 입력받은 그대로 1번부터 센다면 (1 << 21) - 1 로 all을 해야하고
n-1을 사용해 0번부터 센다면 (1 << 20) - 1 로 all 할 수 있음.
input을 하면 입력이 너무 느려서 readline을 쓰는 것이 좋다.
sys.stdin.readline로 문자열을 입력 받았을 때 \n까지 포함되므로 이 부분 해결
set()으로 푼다면
remove()를 호출할 때, 삭제할 원소가 없으면 에러를 발생 -> discard 매서드 사용
반응형
'PS > 백준' 카테고리의 다른 글
백준 1927번: 최소힙 python 파이썬 (0) | 2021.08.06 |
---|---|
[테스트케이스 추가] 백준 16398 번: 행성연결, python 파이썬 (0) | 2021.08.06 |
[테스트케이스 모음] 백준 2805번 : 나무자르기 python, 파이썬 (3) | 2021.07.20 |
[테스트케이스 추가] 백준 2512번: 예산 python, 파이썬 (0) | 2021.07.20 |
[테스트케이스 추가] 백준 1654번: 랜선 자르기 python, 파이썬 (4) | 2021.07.20 |
댓글