loading
본문 바로가기 메뉴 바로가기

티스토리 뷰

카테고리 없음

Set ( Feat. 백준 3052)

Tip_srevil 2022. 3. 30. 20:08
반응형
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

#include <iostream>
#include <set>

using namespace std;

int main()
{
	set<int>s;
    int num;
    for(int i = 0; i< 10; i++){
    	cin >> num;
        s.insert(num%42);
    }
    cout << s.size();
    
    return 0;
}

나의 접근 )

서로 다른 값이 몇 개 있는지를 알아내는 것이 목표다.

처음에는 새로운 배열을 하나 추가해서, 선택정렬을 하는 것처럼 일일이 하나씩 비교하고 count 할 생각이었다.

하지만, 너무 번거롭다고 생각되어 다른 방법을 찾아 보았다.

그때 알게 된 것이 아래에 정리해 둔 set이라는 것이다.

10개의 수를 for문을 통해 입력받고, s라는 set을 지정해둔 다음, s에 입력받은 num%42를 넣어주면

중복되는 값을 다 사라질 것이다.

그렇게 size를 출력하면, 서로 다른 값의 개수를 알 수 있다.


Set container

  • 연관 컨테이너(Associative container) 중 하나
  • 노드 기반 컨테이너 이며 균형 이진트리로 구현
  • Key라 불리는 원소들의 집합으로 이루어진 컨테이너
  • 원소 중복이 허용 되지 않음.
  • insert 멤버 함수에 의해 삽입 => 자동 정렬
  • default 정렬 기준 = 오름차순

How to use

  • <set> 헤더 파일에 존재
  • 기본 선언 형태 = set<Data_type>variable_name
    set<int> s(pred); // pred를 통해 정렬기준을 세웁니다.
    set<int> s2(s1) // s1을 복사한 s2 
    // 연산자 (==, !=, <, >, <=, >=) 사용가능

** 출처 및 멤버 연산자에 대한 추가적인 내용 < https://blockdmask.tistory.com/79 >


Container

 - STL(표준 C++ 라이브러리. 프로그램에 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리)에서 Container는 같은 타입의 여러 객체를 저장하는 일종의 집합이라고 할 수 있다.

 - Sequence Container : array, vector, list, deque

 - Associative Container : set, multiset, map, multimap

< 출처 및 추가자료 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=je1206&logNo=221397075571 >

Node

- 컴퓨터 네트워크를 구성하는 기기 1개, 1개를 의미.

< 출처 및 추가자료 : https://engineer-mole.tistory.com/141 >

균형 이진트리

  - 모든 노드의 왼쪽과 오른쪽 하위 트리의 높이가 최대 1만큼 차이가 날 수 있는 이진트리

< 출처 및 추가자료 : https://wonit.tistory.com/198 >

반응형

Set ( Feat. 백준 3052)
본문 바로가기 메뉴 바로가기

티스토리 뷰

카테고리 없음

Set ( Feat. 백준 3052)

Tip_srevil 2022. 3. 30. 20:08
반응형
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

#include <iostream>
#include <set>

using namespace std;

int main()
{
	set<int>s;
    int num;
    for(int i = 0; i< 10; i++){
    	cin >> num;
        s.insert(num%42);
    }
    cout << s.size();
    
    return 0;
}

나의 접근 )

서로 다른 값이 몇 개 있는지를 알아내는 것이 목표다.

처음에는 새로운 배열을 하나 추가해서, 선택정렬을 하는 것처럼 일일이 하나씩 비교하고 count 할 생각이었다.

하지만, 너무 번거롭다고 생각되어 다른 방법을 찾아 보았다.

그때 알게 된 것이 아래에 정리해 둔 set이라는 것이다.

10개의 수를 for문을 통해 입력받고, s라는 set을 지정해둔 다음, s에 입력받은 num%42를 넣어주면

중복되는 값을 다 사라질 것이다.

그렇게 size를 출력하면, 서로 다른 값의 개수를 알 수 있다.


Set container

  • 연관 컨테이너(Associative container) 중 하나
  • 노드 기반 컨테이너 이며 균형 이진트리로 구현
  • Key라 불리는 원소들의 집합으로 이루어진 컨테이너
  • 원소 중복이 허용 되지 않음.
  • insert 멤버 함수에 의해 삽입 => 자동 정렬
  • default 정렬 기준 = 오름차순

How to use

  • <set> 헤더 파일에 존재
  • 기본 선언 형태 = set<Data_type>variable_name
    set<int> s(pred); // pred를 통해 정렬기준을 세웁니다.
    set<int> s2(s1) // s1을 복사한 s2 
    // 연산자 (==, !=, <, >, <=, >=) 사용가능

** 출처 및 멤버 연산자에 대한 추가적인 내용 < https://blockdmask.tistory.com/79 >


Container

 - STL(표준 C++ 라이브러리. 프로그램에 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리)에서 Container는 같은 타입의 여러 객체를 저장하는 일종의 집합이라고 할 수 있다.

 - Sequence Container : array, vector, list, deque

 - Associative Container : set, multiset, map, multimap

< 출처 및 추가자료 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=je1206&logNo=221397075571 >

Node

- 컴퓨터 네트워크를 구성하는 기기 1개, 1개를 의미.

< 출처 및 추가자료 : https://engineer-mole.tistory.com/141 >

균형 이진트리

  - 모든 노드의 왼쪽과 오른쪽 하위 트리의 높이가 최대 1만큼 차이가 날 수 있는 이진트리

< 출처 및 추가자료 : https://wonit.tistory.com/198 >

반응형