본문 바로가기

Algorithm/BAEKJOON

[BOJ] 11652번 카드 (C++)

728x90
반응형

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

 

11652번: 카드

준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지

www.acmicpc.net

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n;
	long long k;
	vector<long long> v;
	cin >> n;
	
	for(int i = 0; i < n; i++){
		cin >> k;
		v.push_back(k);
	}
	sort(v.begin(), v.end());
	
	int t = 0;
	int max = 0;
	long long ans;
	while(t < n){
		long long nn = v[t];
		int num = upper_bound(v.begin(), v.end(), nn) - lower_bound(v.begin(), v.end(), nn);
		if(num > max) {
			max = num;
			ans = v[t];
		}
		t = upper_bound(v.begin(), v.end(), nn) - v.begin() + 1;
	}
	
	cout << ans << endl;
	return 0;
}

적혀 있는 수는 -2^62보다 크거나 같고 2^62보다 작거나 같기 때문에 자료형을 long long으로 해주어야 한다.

카드에 적혀있는 숫자를 벡터에 넣고 정렬한 뒤, upper_bound와 lower_bound를 활용해 출현빈도수를 파악한 뒤, 최대 출현빈도수를 갖는 숫자를 출력한다.

728x90
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[BOJ] 21966번 (중략) (C++)  (0) 2022.02.13
[BOJ] 1461번 도서관 (C++)  (0) 2022.02.13
[BOJ] 2630번 색종이 만들기 (C++)  (0) 2022.02.12
[BOJ] 1697번 숨바꼭질 (C++)  (0) 2022.02.12
[BOJ] 1931번 회의실 배정 (C++)  (0) 2022.02.11