티스토리 뷰

>문제

 

11723번: 집합

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

www.acmicpc.net

> 핵심

배열

>풀이과정

쉽다. 처음엔 연결리스트로 할까 생각하다가 시간이 오래걸릴 것 같아서 그냥 배열로 때려박았다.

>깨달은점

쉽다.

>코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main()
{
    int i, m, e;
    char op[10];
    int numset[21] = { 0 };

    scanf("%d", &m);

    for (i = 0; i < m; i++)
    {
        scanf(" %s", op);
        
        if (strcmp(op, "add") == 0)
        {
            scanf(" %d", &e);
            if (numset[e] == 0)
                numset[e] = 1;   
            else
                continue;
        }
        else if (strcmp(op, "remove") == 0)
        {
            scanf(" %d", &e);
            if (numset[e] == 1)
                numset[e] = 0;
            else
                continue;
        }
        else if (strcmp(op, "check") == 0)
        {
            scanf(" %d", &e);
            printf("%d\n", numset[e]);
        }
        else if (strcmp(op, "toggle") == 0)
        {
            scanf(" %d", &e);
            if (numset[e] == 0)
                numset[e] = 1;
            else
                numset[e] = 0;
        }
        else if (strcmp(op, "all") == 0)
        {
            for (int j = 1; j <= 20; j++)
            {
                numset[j] = 1;
            }
        }
        else if (strcmp(op, "empty") == 0)
        {
            for (int j = 1; j <= 20; j++)
            {
                numset[j] = 0;
            }
        }
    }

    return 0;
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함