백준 문제풀이

7785 번 : 회사에 있는 사람

하다블 2023. 8. 29. 19:18
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/problem/7785

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

 

풀이 코드는 다음과 같습니다.

#include <iostream>
#include <string>
#include <map>
#include <algorithm>

using namespace std;

int main() {
	cin.tie(0);
	ios_base::sync_with_stdio(false);
	long long n;
	cin>>n;
	string name,comm;
	map<string,string,greater<>>m;
	for(long long i{0};i<n;i++)
	{
		cin>>name>>comm;
		m[name]=comm;
	}
	for(auto a : m){
		if(a.second=="enter")
			cout<<a.first<<"\n";
	}
   return 0;
}

10의 6 제곱이나 되는 큰 배열을 일일이 누가 나갔고 들어왔는지 매번 찾을 수 없기 때문에 map을 사용해서 업데이트하는 방식으로 구현했습니다. 또한 사전 순의 역순으로 출력하라고 했으므로 내림차순이 되도록 map에 greater를 넣어주었습니다.

map에 익숙하지 않다면 쉽게 해결하기 어려운 문제였다고 생각합니다.

반응형

'백준 문제풀이' 카테고리의 다른 글

14425 번 : 문자열 집합  (0) 2023.08.29
1735 번 : 분수 합  (0) 2023.07.19
13241 번 : 최소공배수  (0) 2023.07.14
9665 번 : 돌 게임  (0) 2023.06.23
1935 번 : 후위표기식2  (0) 2023.06.07