알고리즘

<백준> 11723번 파이썬 알고리즘[집합]

changha. 2021. 11. 3. 22:45
import sys

n = int(sys.stdin.readline())
S = []
for _ in range(n):
  m, num = input().split()
  if m == 'add':
    S.append(int(num))
  elif m == 'remove':
    S.remove(int(num))
  elif m == 'check':
    if int(num) in S:
      print(1)
    else:
      print(0)
  elif m == 'toggle':
    if int(num) in S:
      S.remove(int(num))
    else:
      S.append(int(num))
  elif m == 'all':
    S = [i for i in range(1, 21)]
  elif m == 'empty':
    S = []

이런식으로 배열로 하려했는데 오류가 많았다

- all 에서 m만 입력할 경우 처리하기 

- 중복 없애기 

import sys

n = int(sys.stdin.readline())
S = set()

for _ in range(n):
  temp = sys.stdin.readline().split()

  if len(temp) == 1:
    if temp[0] == "all":
      S = set([i for i in range(1, 21)])
    else:
      S = set()
  
  else:
    func, x = temp[0], temp[1]
    x = int(x)

    if func == "add":
      S.add(x)
    elif func == "remove":
      S.discard(x)
    elif func == "check":
      print(1 if x in S else 0) # 이런 방식 애용하자
    elif func == "toggle":
      if x in S:
        S.discard(x)
      else:
        S.add(x)

 

pypy로 하면 실패 => 메모리 더 잡아먹음 

python3로 성공