룰루코딩

백준 11723 집합 본문

백준

백준 11723 집합

rulru01 2024. 9. 24. 23:39

문제


솔루션

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