[백준 알고리즘]/[C++]

13915번 현수의 열기구 교실 | Baekjoon BOJ 백준 13915 C++ 코드, 해설, 풀이

말하는펭귄 2021. 1. 20. 13:04
728x90
반응형

 

 

이번 포스팅은 백준 13915번 현수의 열기구 교실입니다.

아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.

www.acmicpc.net/problem/13915

 

13915번: 현수의 열기구 교실

현수는 열기구 여름특강의 강사다. 현수는 매우 성실해서 모든 수강생들의 열기구 비행을 기록하고있다. 매 비행 이후, 현수는 그 비행에 참석한 수강생들의 기록을 리스트에 추가한다. 리스트

www.acmicpc.net

 

 

 

기본 알고리즘

vector, set 연습

 

참고

line 11-12

test case의 개수가 주어지지 않을 때 입력받기

 

line 27

벡터 내부의 중복 원소 제거

 

line 13-35

각 벡터(v[0]~v[4])를 set에 insert하여 set의 크기 출력

(set - 중복 원소 없음)

2021/01/21 - [[C , C++]] - C++ vector 중복 원소 삭제

 

C++ vector 중복 원소 삭제

1. unique 함수 unique 함수는 vector에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수 (algorithm 헤더에 정의) 자신이 바꾼 vector의 end()를 반환 (중복 원소들(쓰레기 값들)의 첫 번째 위치 리턴)

scarlettb.tistory.com

 

diagram

after line 16

after line 24

after line 26

after line 27

 

 

 

 

전체 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//백준13915 현수의열기구교실
 
#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
 
int main() {
    int N;
    while (cin >> N) {
        string arr[1002];
        for (int i = 0; i < N; i++) {
            cin >> arr[i];
        }
 
        vector<vector<int>> v;
        for (int i = 0; i < N; i++) {
            vector<int> temp = {};
            v.push_back(temp);
            for (int l = 0; l < arr[i].size(); l++) {
                v[i].push_back(arr[i].at(l) - '0');
            }
 
            sort(v[i].begin(), v[i].end());
            v[i].erase(unique(v[i].begin(), v[i].end()), v[i].end());
        }
        
        set<vector<int>> s;
        for (int i = 0; i < N; i++) {
            s.insert(v[i]);
        }
        
        cout << s.size() << endl;
    }
 
    return 0;
}
cs

 

 

 

 

 

728x90
반응형