구현/집합

Q·2021년 8월 24일
0

알고리즘/백준

목록 보기
13/70

문제 설명


비어있는 공집합 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를 공집합으로 바꾼다.

문제링크

전체 코드

import sys

input = sys.stdin.readline

m = int(input())
s = set()

for _ in range(m):
    a = input().strip().split()

    if a[0] == 'add':
        s.add(int(a[1]))

    elif a[0] == 'remove':
        if int(a[1]) in s:
            s.discard(int(a[1]))

    elif a[0] == 'check':
        if int(a[1]) in s:
            print(1)
        else:
            print(0)

    elif a[0] == 'toggle':
        if int(a[1]) in s:
            s.discard(int(a[1]))
        else:
            s.add(int(a[1]))

    elif a[0] == 'all':
        s = set([i for i in range(1, 21)])

    else:
        s = set()

해결 방법

말 그대로 구현을 할 수 있는지에 대한 능력을 물어보는 문제이다. 만약 시간초과나 메모리초과가 난다면 처음 리스트인 s를 set()으로 초기화 해서 문제를 풀어보면 좋을 것 같다.

profile
Data Engineer

0개의 댓글