반응형
이진 트리를 사용해 자료를 정렬하는 STL 알고리즘을 정리한다.
코딩 테스트에서 많이 쓰이는 사용법이다.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#include <iostream>
#include <string>
#include <set>
#define F(i,n) for(register int i = 1; i <= n; i++)
using namespace std;
int main(void)
{
set<int> s1;
cout << "#1. 기본 사용\n";
F(i, 3) s1.insert(i);
s1.insert(3); // 중복은 무시
for (auto i : s1) cout << i << " ";
cout << "\n\n#2. 내림 차순\n";
set<int, greater<int>> s2;
F(i, 3) s2.insert(i);
for (auto i : s2) cout << i << " ";
cout << "\n\n#3. 원소 개수\n";
cout << s2.size()<<endl;
printf("\n#4. 원소 찾기\n"); // find는 set::iterator return, count는 int 반환
printf("1->%s 5->%s\n", s2.find(1)!=s2.end()?"찾음":"못찾음", s2.find(5)!=s2.end()?"찾음":"못찾음");
printf("1->%s 5->%s\n", s2.count(1) ? "찾음" : "못찾음", s2.count(5) ? "찾음" : "못찾음");
cout << "\n#5. 원소 삭제\n";
s2.erase(1);
s2.erase(5); // 없는 숫자는 무시
for (auto i : s2) cout << i << " ";
cout << "\n\n#6. 초기화\n";
s2.clear();
cout << s2.size();
printf("\n\n#7. 구조체 정렬\n");
struct INFO {
int age;
string name;
} info[3];
struct compare { bool operator() (INFO *a, INFO *b) const{ return a->age < b->age; } };
set<INFO *, compare> s7;
info[0] = { 31, "김덕배" };
info[1] = { 75, "희동구" };
info[2] = { 22, "홀란드" };
INFO tmp = { 22, "짭란드" }; // KEY(age) 중복은 무시
s7.insert(&info[0]);
s7.insert(&info[1]);
s7.insert(&info[2]);
//s7.insert(&tmp);
for (auto i : s7) cout << i->name << " " << i->age<<endl;
printf("\n\n#8. 구조체 역순 정렬\n");
struct compare2 { bool operator() (INFO a, INFO b) const { return a.age > b.age; } };
set<INFO, compare2> s8;
for(auto i : info) s8.insert(i);
//s8.insert(info[0]);
//s8.insert(info[1]);
//s8.insert(info[2]);
for (auto i : s8) cout << i.name << " " << i.age << endl;
return 0;
}
|
cs |
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
|
출력결과
=========== #1. 기본 사용 1 2 3
#2. 내림 차순
3 2 1
#3. 원소 개수
3
#4. 원소 찾기
1->찾음 5->못찾음
1->찾음 5->못찾음
#5. 원소 삭제
3 2
#6. 초기화
0
#7. 구조체 정렬
홀란드 22
김덕배 31
희동구 75
#8. 구조체 역순 정렬
희동구 75
김덕배 31
홀란드 22
|
cs |
728x90
반응형
'Programming > Algorithm' 카테고리의 다른 글
재귀함수를 이용한 하노이 탑 이동횟수 구하는 소스코드 (0) | 2014.02.12 |
---|---|
재귀함수를 이용한 피보나치 수 구하는 소스코드 (0) | 2014.02.11 |