본문 바로가기
Problem Solving/BOJ

[BOJ][Python]11723번 풀이

by NoiB 2022. 5. 29.
반응형

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

 

11723번: 집합

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

www.acmicpc.net

import sys
input = sys.stdin.readline

S = set([])
m = int(input())
for _ in range(m):
    line = input().split()
    if len(line)==1:
        if line[0] == 'all':
            S = set([i for i in range(1,21)])
        else:
            S.clear()
    else:
        if line[0] == 'add':
            S.add(int(line[1]))
        elif line[0] == 'remove':
            S.discard(int(line[1]))
        elif line[0] == 'check':
            if int(line[1]) in S:
                print(1)
            else:
                print(0)
        elif line[0] == 'toggle':
            if int(line[1]) in S:
                S.remove(int(line[1]))
            else:
                S.add(int(line[1]))

이 비슷한 문제들이 예전에도 있었죠. 해당 문제에서 조심해야 할 부분은 all과 empty의 경우 뒤에 따라오는 숫자가 없다는 점이니 입력의 길이를 체크해서 조건문을 하나 더 이용하면 되겠습니다. 나머지는 그냥 문자열 조건문의 반복이에요. 또한 입력이 꽤 많기 때문에 input() 대신 sys.stdin.readline()을 써주세요. input()으로 하니까 시간 초과가 나더라구요.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]18679번 풀이  (0) 2022.05.31
[BOJ][Python]9625번 풀이  (0) 2022.05.30
[BOJ][Python]9655번 풀이  (0) 2022.05.29
[BOJ][Python]1676번 풀이  (0) 2022.05.29