본문 바로가기

알고리즘/BOJ

7785번

7785번 - 회사에 있는 사람


이 문제는 이진탐색트리(Binary Search Tree) 를 공부하다가 예시 문제로 만났다.


이걸 노드들을 struct 해서 복잡하게 구현하기 보다는 STL 의 set을 쓰면 편하다고 알게 되었다.


set 은 써보지 않았지만, map 을 공부할 때 비슷하다는 것을 좀 알아서 쓸 수 있었다. 


map 과는 다르게 set 은 따로 값을 저장하지 않고 key 값을 그대로 이용한다. 또한 오름차순으로 정렬이 된다는 특성!


배운점


이번 문제를 풀면서 iterator 에 대해서 쓰는 방법을 알 수 있게 된 것 같다.. 조금은


처음에 역순으로 출력해야 했기 때문에 iterator 선언 후 rbegin 부터 시작하려고 하자 오류가 발생했다.


그래서 고민하던중에 reverse_iterator 가 있었고 이를 이용해서 문제를 푸니 쉽게 풀 수 있었다.


<정답 코드>


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
#include<iostream>
#include<string>
#include<set>
#include<vector>
using namespace std;
 
int main()
{
    int N;
    set<string> s;
    vector<string> v;
    cin >> N;
 
    while (N--)
    {
        string name;
        string tmp;
        cin >> name >> tmp;
 
        if (tmp == "enter")
        {
            s.insert(name);
        }
 
        if (tmp == "leave")
        {
            s.erase(name);
        }
    }
 
    set<string>::reverse_iterator iter;
 
    for (iter = s.rbegin(); iter != s.rend(); iter++)
    {
        cout << (*iter) << endl;
    }
 
 
 
    return 0;
}
cs


반응형

'알고리즘 > BOJ' 카테고리의 다른 글

11048번  (0) 2017.12.21
1764번  (0) 2017.12.21
11286번(우선순위큐 다시풀기)  (0) 2017.12.21
1927번(우선순위 큐 다시풀기)  (0) 2017.12.20
11279번(우선순위 큐 다시풀기)  (0) 2017.12.20