본문 바로가기

프로그래밍 언어/C, C++

[Hackerrank] 24. Sets-STL

24. Sets-STL

[ 난이도: Easy | 분야: STL ]

1. 내용 정리

Sets는 C++ STL의 일부이다. Sets는 특별한 순서를 따르는 독특한 요소들을 저장하는 역할을 한다.

아래는 sets에서 주로 사용하는 함수들이다:

정의

set<int> s; // Creates a set of integers

 

크기

int length = s.size(); // Gives the size of the set.

 

삽입

s.insert(x); // Inserts an integer x into the set s.

 

요소 삭제

s.erase(val); // Erases an integer val from the set s.

 

요소 찾기

set<int>::iterator itr=s.find(val); // Give the iterator to the element val if it is found otherwise returns s.end().

 

2. 과제

이번 문제에서는 Q개의 쿼리가 주어진다. 각 쿼리는 아래의 세 개의 형식 중 하나에 해당한다:

1 x : 요소 x를 set에 추가한다.

2 x : 요소 x를 set에서 제거한다. (x가 현재 set에 없다면, 행동을 취하지 마라)

3 x : 요소 x가 set에 있다면, Yes를 출력하고 없다면 No를 출력해라

입력 형식

첫 번째 줄은 쿼리의 개수인 Q를 포함한다.

다음 Q개의 줄은 각각 1개의 쿼리를 갖는다. 각 쿼리는 두 개의 정수 y와 x를 가지고 있는데 y는 쿼리 형식을, x는 정수를 의미한다.

 

제약 사항

Q는 1보다 크거나 같고 10^5보다 작거나 같다.

y는 1보다 크거나 같고 3보다 작거나 같다.

x는 1보다 크거나 같고 10^9보다 작거나 같다.

 

출력 형식

쿼리 형식이 3이라면 x라는 정수가 set에 있다면 Yes를 없다면 No를 출력해라.

각 3 형식의 쿼리는 새로운 줄에 출력된다.

 

입력 예시

8
1 9
1 6
1 10
1 4
3 6
3 14
2 6
3 6

 

출력 예시 

Yes
No
No

 

문제

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;


int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    return 0;
}
더보기

정답

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;


int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    int q = 0; // Number of lines
    cin >> q;
    set<int> s; // create set
    for(int i = 0; i < q; i++) {
        int type; int myNum; // Input
        cin >> type >> myNum;
        // Type 1
        if(type == 1) {
            s.insert(myNum);
        }
        // Type 2
        else if(type == 2) {
            set<int>::iterator itr=s.find(myNum);
            // If Exist
            if(itr != s.end()) {
                s.erase(myNum);
            }
            // If not exist, nothing to do.
        }
        // Type 3
        else {
            set<int>::iterator itr=s.find(myNum);
            if(itr != s.end()) {
                cout << "Yes" << endl;
            }
            else {
                cout << "No" << endl;
            }
        }
    }
    return 0;
}

 

 

 

 

©️Hackerrank. All Rights Reserved.

'프로그래밍 언어 > C, C++' 카테고리의 다른 글

[Hackerrank] 26. Print Pretty  (0) 2024.02.21
[Hackerrank] 25. Maps-STL  (0) 2024.02.20
[Hackerrank] 23. Lower-Bound STL  (0) 2024.02.20
[Hackerrank] 22. Vector-Erase  (0) 2024.02.19
[Hackerrank] 21. Vector-Sort  (0) 2024.02.19