[백준] 11652번: 카드
https://www.acmicpc.net/problem/11652
문제
예제, 반례
3
1
2
2
>> 2
알고리즘 접근 방법
입력을 받은 후, sort로 정렬한다.
왼쪽부터 수를 세면서
이전 인덱스와 같으면 cnt를 더해주고,
이전 인덱스와 다르면 cnt가 최대인지 비교한 후, cnt를 1로 초기화해준다.
최대이면 max에 저장, idx에 해당 인덱스 저장한다.
마지막에 한번 더 비교해주자..
풀이
#include <iostream>
#include <algorithm>
using namespace std;
long long arr[100001];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
for (int i=0; i<N; i++)
cin >> arr[i];
sort(arr, arr+N); // 정렬
int cnt, max, idx; // cnt = 현재 카운트 max = 젤 많은 카운트 idx = 젤 많은 숫자 idx
cnt = 1;
max = 1;
idx = 0;
for(int i=1; i<N; i++){
if (arr[i] == arr[i-1]){ // 전에 꺼랑 같으면
cnt++;
}
else{ // 다르면
if(cnt > max){
max = cnt;
idx = i-1;
}
cnt = 1;
}
}
if(cnt > max){
max = cnt;
idx = N-1;
}
cout << arr[idx] << '\n';
return 0;
}
정리
첨에 문제 잘못 읽고 당황.!
💡 참고 포스팅
jow1025님 블로그
sw-ko님 블로그
반례좀 찾아주세요 ㅜㅜ
Author And Source
이 문제에 관하여([백준] 11652번: 카드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@youhyeoneee/백준-11652번-카드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)