[C++] BOJ 11723번 : 집합

Lern-Backup·2021년 9월 25일
0

Baekjoon

목록 보기
10/20

📝 문제


💻 실행 코드

// BOJ 11723번 : 집합
#include <iostream>
#include <vector>
#include <set>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false); // 입출력 빠르게 해 줌
    cin.tie(NULL);
    cout.tie(NULL);

    int m;
    cin >> m;
    set<int> s;
    set<int> new_s = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};

    for(int i = 0; i < m; i++){
        string com;
        int n;
        cin >> com;

        if(com == "add"){
            cin >> n;
            s.insert(n);
        }
        else if(com == "remove"){
            cin >> n;
            if(s.count(n)) // 원소가 있을 때
                s.erase(n);
        }
        else if(com == "check"){
            cin >> n;
            if(s.count(n)) // 원소가 있을 때
                cout << 1 << "\n";
            else // 원소가 없을 때
                cout << 0 << "\n";
        }
        else if(com == "toggle"){
            cin >> n;
            if(s.count(n)) // 원소가 있을 때
                s.erase(n); // 삭제
            else // 원소가 없을 때
                s.insert(n); // 삽입
        }
        else if(com == "all"){ // 원소 바꾸기
            s = new_s;
        }
        else if(com == "empty") // 공집합
            s.clear();
    }
}

📚 문제 풀이

set container란?

  • 노드 기반 컨테이너이며 균형 이진트리로 구성
  • key라 불리는 원소들의 집합으로 이루어진 컨테이너
  • key값은 중복이 허용되지 않음
  • insert에 의해 원소가 삽입되면 자동 오름차순

set의 사용법

  • set 헤더 파일에 속해 있음
ex) set<int> s;

set의 멤버 함수

  • s.begin() : 맨 첫번째 원소 가리킴
  • s.end() : 맨 마지막 원소 가리킴
  • s.clear() : 모든 원소 제거
  • s.count(k) : 원소 k개의 개수 반환 (무조건 0과 1)
  • s.erase(k) : k가 가리키는 원소 제거
  • s.find(k) : 원소 k를 가리키는 반복자 반환
  • s.size() : 원소의 개수 반환

✅ 실행 결과

profile
공부 백업용

0개의 댓글