BOJ|3052号



Pythonプール

N = [] #빈 list생성

for _ in range(10): #10개의 숫자를 입력받음
    N.append(int(input())%42)
N = set(N) #리스트를 set으로 바꿔줌
print(len(N)) #N의 길이 출력
setは、List、DickShownery、Tupleなどのデータを含むコンテナの1つです.集合の特徴は
1.繰り返しは許可されません.
2.順序がない.(unordered collection)
setには順序がないのでインデックスはできません.次のように設定
宣言はset = {1, 2, 4, 6, 3}のように辞書に似ている.dictionaryはキーを使用してインデックスを行うため、setインデックスを持つバージョンはdictionaryと見なすことができます.
とにかく.setは重複が許されないので,「異なる」個数を求める問題で残りを全て求め,その後重複を取り除き,異なる残りのみを残すのでsetで解いた.

C++プール

#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    vector<int> arr; //vector arr 선언
    int n;
    for (int i = 0; i < 10; i++) {
    	cin >> n; //10개의 숫자 입력
    	arr.push_back(n % 42); //입력 후 바로 vector에 42로 나눈 나머지 추가
    }
    sort(arr.begin(), arr.end()); //vector 정렬
    arr.erase(unique(arr.begin(), arr.end()),arr.end()); //vector 중복 제거
    cout << arr.size(); //vector의 크기 출력
}
C++にもsetがあります.ヘッダーに#include <set>と表示し、set<int> sでsetを作り、1つずつ加算すればいいです.
このプールは、ベクトル重複要素を除去する方法であり、重複を除去する前に、まずsortに並べ替える.理由は以下の通り.
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<int> v = { 1,5,2,3,3,2,1,5 };
    unique(v.begin(), v.end());
    for (int i : v) cout << i << '\n';
}
1 1 2 2 3 3 5 5
/* 
결과 : 
1
5
2
3
2
1
5
5
*/
リンクテキスト
上のリンクでは理由が説明されていますので、おすすめします!