[백준/C++] 11652 : 카드

Eunho Bae·2022년 3월 4일
0

백준

목록 보기
6/40

카드


아이디어

어떤 정수가 많이 나왔는지 출력하는 문제이다. 단, 나온 횟수가 같은 정수끼리는 서로 크기를 비교해서 작은 정수만 출력.

1 5 5 3 3인 경우 끝까지 다 돌아봐야 어떤 값이 가장 큰 value인지 알 수 있다.
위 경우 3의 value가 가장 큰 수로 result에 저장되어 있으나, map이 삽입될때 자동으로 오름차순으로 정렬되어 저장되는 것을 감안하면 3이 출력이 될 것이다.


후기

  • 문제를 잘 보고 적절한 자료형을 사용하자

제출 코드

#include <iostream>
#include <map>

using namespace std;

int main(int argc, char* argv[])
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	int n;
	cin >> n;

	map<long long, int> m;
	
	int result = 0;
	long long input;

	for (int i = 0; i < n; i++)
	{
		cin >> input;
		m[input]++;
	}

	map<long long, int>::iterator iter = m.begin();
	map<long long, int>::iterator iterEnd = m.end();

	for (; iter != iterEnd; iter++)
		result = max(iter->second, result);

	for (iter = m.begin(); iter != iterEnd; iter++)
		if (iter->second == result)
		{
			cout << iter->first;
			break;
		}

	return 0;
}
profile
개인 공부 정리

0개의 댓글