알고리즘/백준

백준-11723-집합

hong2943 2024. 3. 27. 22:27

문제 해결

  • 문제에 주어진 그대로 각 기능을 구현하면 된다.
  • 다만, 입력이 최대 3,000,000 이다. 따라서 List 보다는 더 빠른 탐색속도를 가지는 Set 자료형을 선택한다.

구현한 코드

import sys

n = int(input())

S = set()
for i in range(n):
    active = list(sys.stdin.readline().split())

    if active[0] == 'add':
        S.add(int(active[1]))
    elif active[0] == 'remove':
        S.discard(int(active[1]))
    elif active[0] == 'check':
        if int(active[1]) in S:
            print(1)
        else:
            print(0)
    elif active[0] == 'toggle':
        if int(active[1]) in S:
            S.discard(int(active[1]))
        else:
            S.add(int(active[1]))
    elif active[0] == 'all':
        for i in range(1,21):
            S.add(i)
    elif active[0] == 'empty':
        S = set()
  • 많은 입력을 요구하는 문장에서 반복문 내에서의 입력이 필요하면 sys를 사용해서 input을 대체해야함을 기억해야한다.
  • set 에 값을 넣고 뺄 수 있는 메소드를 잘 활용한다.
    • 처음에는 remove를 구현할 때 if문을 통해서 해당 숫자가 있다면 remove를 수행했지만, set의 메소드 중 discard를 사용하면 값이 존재하면 제거, 존재하지 않는다면 무시하는 기능을 하는 메소드를 활용하면 시간초과를 해결할 수 있다.
  • 또한 집합은 새롭게 정의하면 초기화 된다. -> empty 부분 참조

문제링크

'알고리즘 > 백준' 카테고리의 다른 글

백준-2563-색종이  (1) 2024.04.06
백준-8979-올림픽  (0) 2024.04.05
백준-9017-크로스 컨트리  (0) 2024.04.05
백준-1157-단어 공부  (0) 2024.03.26
백준-2979-트럭주차  (0) 2024.03.26