Notice
Recent Posts
Recent Comments
Link
just inside
[백준] Silver 4. 11723 - 집합 python 본문
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
'coding test > 구현' 카테고리의 다른 글
[백준] Silver 4. 1158 - 요세푸스 문제 python (0) | 2024.08.29 |
---|---|
[백준] Silver 4. 18110 - solved.ac python (0) | 2024.07.28 |
[백준] Bronze 1. 28702 - FizzBuzz python (0) | 2024.07.17 |
[백준] Bronze 1. 11050 - 이항 계수 1 python (0) | 2024.07.16 |
[백준] Bronze 1. 2869 - 달팽이는 올라가고 싶다 python (1) | 2024.07.16 |