Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 이분탐색
- 백준
- TCP
- 컴퓨터 네트워크
- 그래프
- 브루트포스
- AWS
- HTTP
- 재귀
- 트리
- 순열
- dfs
- github action
- 자료구조
- 분할 정복
- 다이나믹프로그래밍
- 그리드
- GIT
- 역방향 반복자
- 분할정복
- 그리드 알고리즘
- CI/CD
- Spring
- 도커
- 알고리즘
- 자바
- 다이나믹 프로그래밍
- BFS
- 스프링
- SQL
Archives
- Today
- Total
코딩성장스토리
백준 7785번 : 회사에 있는 사람(역방향반복자 ,반복자) 본문
https://www.acmicpc.net/problem/7785
7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
이 문제는 set을 이용해서 넣었다 뺏다 하면서 푸는 문제이다 다른 문제에 비해 비교적 쉬운 문제라 구현하는데 에 문제는 없었다. 근데 여기서 set과 반복자 역박향 반복자를 처음 알게 되었다.
set에 begin 함수와 end함수는 그냥 반복자 iterate로 할 수 있지만
rebegin 와 rend 같이 역으로 가는 함수는 역방향 반복자 reverse_iterator 를 사용해야 했다.
물론 그냥 auto 변수를 이용해서 변수형을 스스로 맞추게 하면 편하게 하지만 반복자를 어떻게 써야하는지 알고 가는 것이 중요하다 생각한다잉
코드를 보자잉
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main(){
int n;
set<string> save;
cin>>n;
for(int i=0;i<n;i++){
string ch;
string s;
cin>>s;
cin>>ch;
if(ch=="enter"){
save.insert(s);
}
if(ch=="leave"){
save.erase(s);
}
}
for (set<string>::reverse_iterator iter = save.rbegin(); iter != save.rend(); iter++) { //역방향 반복자
cout << *iter << "\n";
}
}'백준 코딩' 카테고리의 다른 글
| 백준 1759번: 암호 만들기 (0) | 2022.01.28 |
|---|---|
| 백준 1764번:듣보잡 (0) | 2022.01.27 |
| 백준 2022번:사다리 (0) | 2022.01.25 |
| 백준 1561번: 놀이 공원 (0) | 2022.01.25 |
| 백준 1939번:중량제한 (0) | 2022.01.23 |