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 |