일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 코딩
- 마이스터고
- 삼성 부트캠프
- 싸피 13기
- 정보처리기사
- 백준 2003
- UML
- 부트캠프
- 13기
- 삼성청년SW아카데미
- 우테코
- 프리코스
- 코테
- 우테코 7기
- 삼성 청년 SW 아카데미
- 디자인패턴
- 삼성
- SWEA
- 취뽀
- 우테코 프리코스
- 코딩테스트
- 비전공자
- 개발자
- 파이썬
- dfs
- 싸피
- 삼성 청년 sw아카데미
- 정처기
- SSAFY
- 백준
Archives
- Today
- Total
룰루코딩
백준 11723 집합 본문
문제
솔루션
import sys
input=sys.stdin.readline
s=set()
n=int(input())
for _ in range(n):
cmd=input().split()
if cmd[0]=="add":
s.add(int(cmd[1]))
elif cmd[0]=="remove":
s.discard(int(cmd[1]))
elif cmd[0]=="check":
if int(cmd[1]) in s:
print(1)
else:
print(0)
elif cmd[0]=="toggle":
if int(cmd[1]) in s:
s.discard(int(cmd[1]))
else:
s.add(int(cmd[1]))
elif cmd[0]=="all":
s=set([i for i in range(1,21)])
elif cmd[0]=="empty":
s=set()
깨달은 점
1년전쯤.. 풀었다가 틀렸던 문제인데 다시 풀게 되었다.
이전에 제출했던 답이
import sys
input=sys.stdin.readline
s=set()
n=int(input())
for _ in range(n):
cmd=input().split()
if cmd[0]=="add":
s.add(cmd[1])
elif cmd[0]=="remove":
s.discard(cmd[1])
elif cmd[0]=="check":
if cmd[1] in s:
print(1)
else:
print(0)
elif cmd[0]=="toggle":
if cmd[1] in s:
s.discard(cmd[1])
else:
s.add(cmd[1])
elif cmd[0]=="all":
s=set([i for i in range(1,21)])
elif cmd[0]=="empty":
s={0}
이전에 제출했던 코드에서의 문제점은
1. cmd[1]는 문자열이므로, 숫자 연산을 하기 위해서는 int(cmd[1])로 변환이 필요했다.
=> 숫자연산은 add, remove, check, toggle 명령에서 숫자 비교가 필요!!
2. empty 명령은 공집합을 {0}로 설정하는 것이 아니라 set()으로 설정해야 했다.
=> {0}은 0을 포함한 집합임
두 문제를 고쳐주었더니 해결되었다.
'백준' 카테고리의 다른 글
백준 1789 수들의 합 (1) | 2024.09.26 |
---|---|
백준 11047 동전 0 (0) | 2024.09.25 |
백준 1463 1로 만들기 (0) | 2024.09.24 |
백준 1764 듣보잡 (0) | 2024.09.21 |
백준 7568 덩치 (1) | 2024.09.20 |