본문 바로가기
Baekjoon/[Code.plus] 알고리즘 기초 2/2

[BOJ/백준] 11723 집합

by 해적거북 2021. 9. 9.
728x90

● [문제번호 11723] 집합

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

 

11723번: 집합

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

www.acmicpc.net

 

● 알아야 할 것

: NULL

 

● 풀이 과정

: 문제에서 주어진 내용에 따라 간단하게 구현가능하다.

 

● 주의 할 것

: 숫자 입력 후 문자열 입력받을 때 공백있는 문자열이 있는 경우,

ws 또는 cin.ignore()를 이용해야한다.

 

하지만 아래 코드에서는 공백없는 문자열을 입력받았으므로

상관없다.

 

● 참고 할 것

: 숫자 입력 후 공백있는 문자열 입력시 주의사항

https://pirateturtle.tistory.com/151

 

● 풀이 코드

#include <bits/stdc++.h>

using namespace std;

// num : 각 원소의 값이 (0 : 집합에 없음 / 원소의 index : 집합에 존재함)
// cmd : 명령 문자열 입력
int num[21];
string cmd;
int M, x;

// S에 x를 추가한다
void ADD()
{
    cin >> x;
    
    num[x] = x;
}

// S에 x를 제거한다
void REMOVE()
{
    cin >> x;
    
    num[x] = 0;
}

// S에 x가 있으면 1, 없으면 0 출력
void CHECK()
{
    cin >> x;
    
    if(num[x])
        cout << 1 << "\n";
    else
        cout << 0 << "\n";
}

// S에 x가 있으면 x를 제거, 없으면 x를 추가
void TOGGLE()
{
    cin >> x;
    
    if(num[x])
        num[x] = 0;
    else
        num[x] = x;
}

// S를 {1, 2, ... , 20} 으로 바꾼다
void ALL()
{
    for(int i = 1; i <= 20; i++)
        num[i] = i;
}

// S를 공집합으로 바꾼다
void EMPTY()
{
    for(int i = 1; i <= 20; i++)
        num[i] = 0;
}


int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    // 연산의 수 입력
    cin >> M;
    
    // 명령별 함수 실행
    for(int m = 0; m < M; m++)
    {
        cin >> cmd;
        
        if(cmd == "add")
            ADD();
        else if(cmd == "remove")
            REMOVE();
        else if(cmd == "check")
            CHECK();
        else if(cmd == "toggle")
            TOGGLE();
        else if(cmd == "all")
            ALL();
        else if(cmd == "empty")
            EMPTY();
    }
    
    return 0;
}

 

 

● [백준] - [알고리즘 기초 2/2] - [540 - 브루트 포스 - 비트마스크] 문제집

번호 문제 번호 문제 이름 풀이 링크
1 11723 집합 https://pirateturtle.tistory.com/265
2 1182 부분수열의 합 https://pirateturtle.tistory.com/266
3 14889 스타트와 링크 https://pirateturtle.tistory.com/267
4 14391 종이 조각 https://pirateturtle.tistory.com/268

 

728x90

댓글