관리 메뉴

솜씨좋은장씨

[BaekJoon] 11723번 : 집합 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 11723번 : 집합 (Python)

솜씨좋은장씨 2022. 2. 7. 00:40
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 집합입니다.

 

11723번: 집합

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

www.acmicpc.net

👨🏻‍💻 문제 풀이

문제를 보면 입력을 약 3백만번 정도 하도록 되어있습니다.

import sys

input = sys.stdin.readline

그래서 위와 같이 input() 대신 sys.stdin의 readline()을 대신 사용합니다.

input_command = input().split()

command, data = None, None

if len(input_command) == 2:
    command, data = input_command[0], int(input_command[1])
else:
    command = input_command[0]

그리고 입력 받은 문자열을 공백을 기준으로 나누어

길이가 2 이상이면 첫번째 값을 명령어 두번째 값을 데이터로 사용합니다.

def ziphap(my_ziphap, command, data):
    if command == "add":
        my_ziphap.add(data)
    elif command == "remove":
        my_ziphap.discard(data)
    elif command == "check":
        if data in my_ziphap:
            print(1)
        else:
            print(0)
    elif command == "toggle":
        if data in my_ziphap:
            my_ziphap.remove(data)
        else:
            my_ziphap.add(data)
    elif command == "all":
        my_ziphap = set([i for i in range(1, 21)])
    elif command == "empty":
        my_ziphap = set()
        
    return my_ziphap

그 이후에 명령어에 해당하는 행동을 수행하는 함수를 만들어 줍니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

import sys

input = sys.stdin.readline

def ziphap(my_ziphap, command, data):
    if command == "add":
        my_ziphap.add(data)
    elif command == "remove":
        my_ziphap.discard(data)
    elif command == "check":
        if data in my_ziphap:
            print(1)
        else:
            print(0)
    elif command == "toggle":
        if data in my_ziphap:
            my_ziphap.remove(data)
        else:
            my_ziphap.add(data)
    elif command == "all":
        my_ziphap = set([i for i in range(1, 21)])
    elif command == "empty":
        my_ziphap = set()
        
    return my_ziphap
    
    
if __name__ == "__main__":
    my_ziphap = set()

    N = int(input())
    
    for _ in range(N):
        input_command = input().split()
        
        command, data = None, None
        
        if len(input_command) == 2:
            command, data = input_command[0], int(input_command[1])
        else:
            command = input_command[0]
            
        my_ziphap = ziphap(my_ziphap=my_ziphap, command=command, data=data)
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments