728x90
https://www.acmicpc.net/problem/11652
11652번: 카드
준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지
www.acmicpc.net
#include <stdio.h> // 카드
#include <stdlib.h>
int compare(void* first, void* second)
{
long long int* a = (long long int*)first;
long long int* b = (long long int*)second;
if (*a > *b)
return 1;
else if (*a < *b)
return -1;
else
return 0;
}
int main()
{
int n;
scanf("%d", &n);
long long int arr[100000];
for (int i = 0; i < n; i++)
{
scanf("%lld", &arr[i]);
}
qsort(arr, n, sizeof(arr[0]), compare);
long long int ans = 0;
int cnt = 1;
int max_cnt = 0;
for (int i = 0; i < n - 1; i++)
{
if (arr[i] == arr[i + 1])
cnt++;
else
cnt = 1;
if (cnt > max_cnt)
{
ans = arr[i];
max_cnt = cnt;
}
}
if (n == 1)
ans = arr[0];
printf("%lld", ans);
return 0;
}
MEMO
-- 2^62 제곱은 long long int 로 표현 가능(2^63 - 1까지)
-- 오름차순 정렬(퀵정렬) 후 배열에서 같은 수라면 cnt 증가
-- 배열을 돌면서 최대 cnt에 해당하는 배열의 수를 ans에 저장
-- n == 1인 경우 for문을 들어가지 않으므로 예외처리
!! 퀵정렬 compare 사용할 때 정확한 자료형 선언하기 !!
728x90
728x90
'백준[baekjoon] > C언어' 카테고리의 다른 글
백준(baekjoon) [C] - 2776번: 암기왕 (0) | 2023.02.05 |
---|---|
백준(baekjoon) [C] - 2075번: N번째 큰 수 (0) | 2023.02.04 |
백준(baekjoon) [C] - 2512번: 예산 (0) | 2023.02.02 |
백준(baekjoon) [C] - 2504번: 괄호의 값 (0) | 2023.02.01 |
백준(baekjoon) [C] - 1012번: 유기농 배추 (0) | 2023.02.01 |