반응형
[ Contents ]
1. 문제 (링크 참조)
11723번: 집합
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
www.acmicpc.net
2. 문제 풀이
집합 연산을 하는 문제입니다. 문제 유형은 비트마스킹으로, 비트 연산을 통해 집합 연산을 구현합니다.
2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학
[Algorithm] 단골 1번 문제, 구현 / 수학
[ Contents ] 1. 구현 단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하
star7sss.tistory.com
시간제한 1.5초 / 메모리 제한 4MB이지만, 비트 연산을 하지 않더라도 풀 수 있습니다. 단순히 구현문제라고 생각하시고 푸시면 되겠습니다.
3. 코드
import sys
input = sys.stdin.readline
n = int(input())
S = [0]*21 # x는 1부터 20
for i in range(n):
operation = input().rstrip()
if operation == 'all': #1로 초기화
S = [1]*21
elif operation == 'empty': #0으로 초기화
S = [0]*21
else:
op, x = operation.split()
if op == 'add':
S[int(x)] = 1 #추가
elif op == 'remove':
S[int(x)] = 0 #제거
elif op == 'check':
print(S[int(x)]) #확인
elif op == 'toggle':
if S[int(x)] == 0:
S[int(x)] = 1 #0이면 1
else:
S[int(x)] = 0 #1이면 0
토글 같은 경우, not연산 같은 걸 쓰면 좋겠으나 if-else로도 통과합니다.
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) (0) | 2022.02.12 |
---|---|
[자료구조/해시] 백준 1620 나는야 포켓몬 마스터 이다솜 - Python (0) | 2022.02.12 |
[자료구조/해시] 백준 15829 Hashing - Python (0) | 2022.02.11 |
[Brute Force] 백준 18111 마인크래프트 - Python (0) | 2022.02.11 |
[구현/수학] 백준 2869 달팽이는 올라가고 싶다 - Python (0) | 2022.02.11 |
댓글