just inside

[백준] Silver 4. 11723 - 집합 python 본문

coding test/구현

[백준] Silver 4. 11723 - 집합 python

방울도마도 2024. 8. 1. 15:16
728x90

문제 링크

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


문제 설명

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

 

입력

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.

둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

 

출력

check 연산이 주어질때마다, 결과를 출력한다.


제출 코드

import sys

input = sys.stdin.readline

S = set()

m = int(input().rstrip())
for _ in range(m):
    op = input().split()
    if len(op) == 2:
        type, num = op[0], int(op[1])
        if type == 'add':
            S.add(num)
        elif type == 'remove':
            S.discard(num)
        elif type == 'check':
            if num in S:
                print(1)
            else:
                print(0)
        else:
            if num in S:
                S.remove(num)
            else:
                S.add(num)
    else:
        if op[0] == 'all':
            S = set([i for i in range(1, 21)])
        else:
            S = set()

 

풀이

조건에 맞추어, set 자료형을 활용해 차근차근 구현하면 되는 문제이다.

 

알아둘 사항

  • set 자료형에 대해 잘 알아두자! 유용한 함수들이 있다.
  • set의 요소를 삭제할 때, set.discard(x) 함수를 사용하면 x가 set에 들어있지 않는 경우에 에러가 발생하지 않는다. set.remove(x) 사용시에는 set에 x가 들어있지 않으면 에러가 발생한다.
728x90