Algorithm Problems

[백준][Python] 11723번 집합

WakaraNai 2021. 8. 4. 01:39
728x90
반응형

https://www.acmicpc.net/problem/11723

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net

 

 

Python

import sys
input = sys.stdin.readline

s = [0]*21
for _ in range(int(input())):
    cmd = input().split()

    if cmd[0][:2] == "al":
        s.clear()  # s= ~~ 만 하면 새로운 것을 할당할 뿐 이전 것이 지워지지 않음
        s = [1]*21
    elif cmd[0][:2] == "em":
        del s[:]
        s = [0]*21
    else:
        cmd[1] = int(cmd[1])
        if cmd[0][:2] == "ad":
            s[cmd[1]] = 1
        elif cmd[0][:2] == "re":
            s[cmd[1]] = 0
        elif cmd[0][:2] == "ch":
            print(s[cmd[1]])
        elif cmd[0][:2] == "to":
            s[cmd[1]] = 0 if s[cmd[1]] else 1   # 1-s[cmd[1]]

 

 

풀이

  • s.clear()
    • clear()를 써주어야만 해당 리스트가 메모리에서 완전히 삭제된다. 메모리를 아껴쓰자!
    • 이와 비슷하게 del s[:]도 있다
  • 1, 0 toggle은 1-x
  • 위의 코드는 pypy3로 채점하면 메모리 초과가 난다. python3로 채점하면 통과한다. 
    • 일단 python3가 메모리 면에서 좀 더 허용된다는 것은 알게 됐다.
728x90
반응형