[BOJ] 11723번: 집합

2023. 2. 16. 11:00·Problem Solving/Baekjoon

출처 : https://www.acmicpc.net/problem/11723

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net

 

 

1. 문제 설명 

비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.

  • add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.
  • remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.
  • check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)
  • toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)
  • all: S를 {1, 2, ..., 20} 으로 바꾼다.
  • empty: S를 공집합으로 바꾼다. 

 


2. 접근 방식 

bitwise operator를 활용하는 법을 익히는 기본 문제 !

 

 

 


3. 주석 달기 (변수 설명, 각 줄마다 문장으로 설명, 함수 설명)

import sys
input = sys.stdin.readline
n = int(input())
s = 0

for _ in range(n):
    command = input().rstrip()
    if ' ' in command:
        c, x = command.split()
        x = int(x)
        if command[0] == 'a':
            # add x
            s |= (1 << x)

        elif command[0] == 'r':
            # remove x
            s &= ~(1 << x)

        elif command[0] == 'c':
            # check x
            print(1 if s & (1 << x) else 0)

        elif command[0] == 't':
            # toggle x
            s ^= (1 << x)

    else:
        # all
        if command[0] == 'a':
            s = (1 << 21) - 1
        # empty
        else:
            s = 0

 

 


4. 분석 및 시간복잡도 

아직 비트연산에 대한 시간 복잡도를 잘 모르겠다... 천천히 공부해보는걸로 .. 메모리도 무려 4MB 제한이라니

 

 

'Problem Solving/Baekjoon' 카테고리의 다른 글
  • [BOJ] 12813번: 이진수 연산
  • [BOJ] 13458번: 시험 감독
  • [BOJ] 25327번: 다중 항목 선호도 조사(Large)
  • [BOJ] 17466번: N! mod P(1)
kimdozzi
kimdozzi
끝까지 포기하지 않으면, 내가 다 이겨!
  • kimdozzi
    도브로
    kimdozzi
  • 전체
    오늘
    어제
    • 분류 전체보기 (132)
      • Problem Solving (49)
        • Baekjoon (29)
        • Programmers (0)
        • LeetCode (17)
        • 삼성 유형 (2)
      • Computer Science (27)
        • Operating System (2)
        • Algorithms (13)
        • Network (6)
        • DataBase (6)
      • Backend (33)
        • JavaScript (0)
        • TypeScript (6)
        • Java (7)
        • Spring Boot (7)
        • Spring Security (6)
        • JPA (2)
        • Mybatis (1)
        • Junit5 (1)
        • Redis (3)
      • DevOps (14)
        • Git, Github (5)
        • docker (4)
        • AWS (3)
        • nginx (2)
      • etc (6)
        • IntelliJ (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 티스토리
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    구간 업데이트
    오프라인 쿼리
    오블완
    S3
    Bucket
    타입스크립트
    삼성기출
    구간합
    도커
    컨테이너
    PrefixSum
    파이썬
    AWS
    누적합
    인덱스 시그니처
    점 업데이트
    TypeScript
    세그먼트 트리
    interface
    백준
    티스토리챌린지
    docker image
    인터페이스
    segment tree
    CORS
    imos법
    docker
    인덱서블 타입
    python
    온라인 쿼리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kimdozzi
[BOJ] 11723번: 집합
상단으로

티스토리툴바