Python/알고리즘 - 백준

백준 11723 파이썬 문제풀이

Jong_seoung 2023. 9. 21. 14:06
반응형

백준 11723 파이썬 문제 풀이

 

문제 링크 

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

 

11723번: 집합

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

www.acmicpc.net

 


문제

입력

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.

둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

 

출력

check 연산이 주어질때마다, 결과를 출력한다.

 

제출 코드

import sys
input = sys.stdin.readline

test = int(input()) # 수행 횟수
S = []

for i in range(test):
    a = list(input().split())
    if a[0] == 'all':
        S = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]
    elif a[0] == 'empty':
        S = []
    elif S.count(a[1]) >= 1:
        if a[0] == 'remove' or a[0] == 'toggle':
            S.remove(a[1])
        elif a[0] == 'check':
            print(1)
    else:
        if a[0] == 'add' or a[0] == 'toggle':
            S.append(a[1])
        elif a[0] == 'check':
            print(0)

 

오답 코드

더보기
test = int(input()) # 수행 횟수
S = []

for i in range(test):
    a = list(input().split())
    if a[0] == 'all':
        S = [str(i) for i in range(1, 21)]
    elif a[0] == 'empty':
        S = []
    elif S.count(a[1]) >= 1:
        if a[0] == 'remove' or a[0] == 'toggle':
            S.remove(a[1])
        elif a[0] == 'check':
            print(1)
    else:
        if a[0] == 'add' or a[0] == 'toggle':
            S.append(a[1])
        elif a[0] == 'check':
            print(0)

문제점 - 시간 초과

해결 방법

1. input을 sys.stdin.readline으로 변경

2. 'all'에서 1~20 까지의 값을 직접 입력 

 

반응형