본문 바로가기
Algorithm

[구현/비트마스킹] 백준 11723 집합 - Python

by jangThang 2022. 2. 11.
반응형

백준 온라인 저지

 

[ 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로도 통과합니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글