문제 해결
- 문제에 주어진 그대로 각 기능을 구현하면 된다.
- 다만, 입력이 최대 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 |