백준 11652 카드 / C++

이유참치·2025년 12월 15일

백준

목록 보기
142/249

문제 : 11652

풀이 point

정렬을 진행한 후 가장 많이 나오는 값을 찾으면 된다.

풀이 방법

정렬 했을 때 중복된 요소들은 인접해있다는 점을 활용하여 문제를 풀면 된다.

인접해있는 값을 비교한 후 같으면 cnt += 1을 한다. 이때 마지막 요소는 for문을 통해 비교가 안되기 때문에 마지막에 따로 계산해줘야한다.

코드

//백준 11652, 카드

#include <iostream>
#include <algorithm>

long long arr[100'000];

int main (){

    int N;
    std::cin >> N;
    for(int i{0}; i<N; ++i) std::cin >> arr[i];
    std::sort(arr, arr+N);
    
    int cnt{1}; int max{0}; long long num;
    for(int i{1}; i<N; ++i){
        if(arr[i-1] == arr[i]) ++cnt;
        else{
            if(cnt > max){
                max = cnt;
                num = arr[i-1];
            }
            cnt = 1;
        }
    }
    if(cnt > max) num = arr[N-1];
    std::cout << num;

    return 0;
}
profile
임아리 - 대학생

0개의 댓글