[백준 실버 4] 10546 : 배부른 마라토너

수민·2024년 6월 23일
0

[C++] 코딩테스트

목록 보기
117/117
post-thumbnail

🖊️ 문제

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


🖊️ 생각

취업이슈로 거의 반년만에 푸는 백준,,,
다시 초심으로 돌아가 실버 기초문제루!!

자료구조 선택이 중요한 문제인 것 같았다.
조건이라고 하면...

1. 검색/삽입/삭제 효율성 중요!

N개의 원소를 삽입, 삭제 해야 하므로 삽입, 삭제의 성능이 중요하다.
그런데 맨 앞,뒤에서 삽입/삭제가 일어나지는 않음!
검색해서 원하는 원소를 찾아야 한다.
-> 아무래도 해시 자료구조가 좋겠지..?

2. 중복 허용

map, set, unordered_map, unordered_set 탈락!
그리고, 중복 원소 삭제 시 중복 원소들 중 하나만 삭제되어야 함

그러면 남는건?
multiset!!!
value는 필요없으니...

그치만, multiset에서 무작정 erase 함수를 사용하면, 모든 중복 원소가 삭제된다.
따라서 iterator를 사용해서, 원하는 참가자를 삭제시켜야 함.

그것만 제외하면 굿굿~
이지하게 풀었다!


🖊️ 풀이

#include <iostream>
#include <set>
using namespace std;

int main()
{
	int n;
	cin >> n;

	multiset<string> mem;
	string name;
	for (int i = 0; i < n; i++)
	{
		cin >> name;
		mem.insert(name);
	}
	for (int i = 0; i < n - 1; i++)
	{
		cin >> name;
		mem.erase(mem.find(name));
	}
	cout << *mem.begin();
}
profile
우하하

0개의 댓글