https://www.acmicpc.net/problem/11723
실버 5 집합
🌟 코드 구현 + 👀 풀이
[전체 코드]
import sys
input = sys.stdin.readline
N = int(input())
S = set()
for _ in range(N):
instr = input().split()
op = instr[0]
if len(instr) > 1:
x = int(instr[1])
else:
x = None
if op == 'add':
S.add(x)
elif op == 'remove':
S.discard(x)
elif op == 'check':
print(1 if x in S else 0)
elif op == 'toggle':
if x in S:
S.discard(x)
else:
S.add(x)
elif op == 'all':
S.update(range(1, 21))
elif op == 'empty':
S.clear()
명령어 입력
instr = input().split()
op = instr[0]
input().split()을 사용하여 공백 기준으로 문자열 분리
instr[0]에는 명령어(문자열)가 저장
if len(instr) > 1: # 두 번째 값(숫자)이 있는 경우 처리
x = int(instr[1]) # 숫자를 정수로 변환
else:
x = None # 숫자가 없을 경우 (all, empty 명령어)
instr 리스트의 길이가 2 이상이면, 두 번째 값을 정수로 변환하여 x에 저장
x가 없는 경우는 None으로 처리
set의 함수를 이용한 명령어 처리
1️⃣ add x
S.add(x)를 사용해 x 추가
중복된 값은 자동으로 무시
2️⃣ remove x
S.discard(x)를 사용해 x 제거
🤔 S.remove(x)를 사용하면 되는 거 아닌가요?
🐢 S.remove(x)는 x가 집합에 없으면 KeyError를 발생시켜요. S.discard(x)의 경우 x가 존재하면 제거, 없으면 무시하기 때문에 오류가 발생하지 않아서 S.discard(x)를 사용하는 거예요!
3️⃣ check x
print(1 if x in S else 0)
in 연산자를 사용해 집합에서 특정 요소가 있는지 없는지 체크
있다면 True를 반환, 없다면 False를 반환
4️⃣ toggle x
위의 add(), discard(), in 활용
5️⃣ all
S.update(range(1, 21))
update(): 집합에 값을 여러 개 추가
range(1, 21)을 사용하여 1~20의 숫자를 한꺼번에 추가
6️⃣ empty
S.clear()
기존 집합을 완전히 비우되 객체 유지
'백준' 카테고리의 다른 글
[백준/파이썬] 4659 (0) | 2025.03.05 |
---|---|
[백준/파이썬] 7568 (0) | 2025.03.05 |
[백준/파이썬] 2110 (0) | 2025.02.24 |
[백준/파이썬] 11401 (0) | 2025.02.23 |
[백준/파이썬] 11444 (0) | 2025.02.22 |