11723번: 집합
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
www.acmicpc.net
문제
비어있는 공집합 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
# 연산의 개수 m 입력받기
m = int(sys.stdin.readline())
S = set() # 집합
# 연산들 입력받기
for _ in range(m):
cmd = sys.stdin.readline().split()
if len(cmd) == 1:
if cmd[0] == "all":
S = set([i for i in range(1, 21)])
else: # empty
S = set()
else:
cmd, num = cmd[0], cmd[1]
num = int(num)
if cmd == "add":
S.add(num)
elif cmd == "remove":
S.discard(num)
elif cmd == "check":
print(1 if (num in S) else 0)
elif cmd == "toggle":
S.discard(num) if (num in S) else S.add(num)
'문제풀이 > 자료구조' 카테고리의 다른 글
[Python/파이썬] 프로그래머스 Summer/Winter Coding(~2018) 스킬트리 (0) | 2023.01.11 |
---|---|
[Python/파이썬] 2018 KAKAO BLIND RECRUITMENT - [1차] 뉴스 클러스터링 (0) | 2022.08.02 |
[Python] 백준 1918번 후위 표기식 (0) | 2022.07.27 |
[Python/파이썬] 백준 1620번 나는야 포켓몬 마스터 이다솜 (0) | 2022.03.11 |
[Python/파이썬] 백준 1966번 프린터 큐 (0) | 2022.01.24 |
11723번: 집합
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
www.acmicpc.net
문제
비어있는 공집합 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 # 연산의 개수 m 입력받기 m = int(sys.stdin.readline()) S = set() # 집합 # 연산들 입력받기 for _ in range(m): cmd = sys.stdin.readline().split() if len(cmd) == 1: if cmd[0] == "all": S = set([i for i in range(1, 21)]) else: # empty S = set() else: cmd, num = cmd[0], cmd[1] num = int(num) if cmd == "add": S.add(num) elif cmd == "remove": S.discard(num) elif cmd == "check": print(1 if (num in S) else 0) elif cmd == "toggle": S.discard(num) if (num in S) else S.add(num)
'문제풀이 > 자료구조' 카테고리의 다른 글
[Python/파이썬] 프로그래머스 Summer/Winter Coding(~2018) 스킬트리 (0) | 2023.01.11 |
---|---|
[Python/파이썬] 2018 KAKAO BLIND RECRUITMENT - [1차] 뉴스 클러스터링 (0) | 2022.08.02 |
[Python] 백준 1918번 후위 표기식 (0) | 2022.07.27 |
[Python/파이썬] 백준 1620번 나는야 포켓몬 마스터 이다솜 (0) | 2022.03.11 |
[Python/파이썬] 백준 1966번 프린터 큐 (0) | 2022.01.24 |