이번에 풀어본 문제는
백준 11652번 카드 입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
PriorityQueue<Long> pq = new PriorityQueue<>();
for(int i = 0; i < N; ++i) pq.add(Long.parseLong(br.readLine()));
int maxCnt = Integer.MIN_VALUE;
int tmpCnt = 1;
long answer = pq.peek();
while(!pq.isEmpty())
{
long cur = pq.poll();
while(!pq.isEmpty())
{
if(cur == pq.peek())
{
tmpCnt++;
pq.poll();
}
else break;
}
if(maxCnt < tmpCnt)
{
maxCnt = tmpCnt;
answer = cur;
}
tmpCnt = 1;
}
System.out.println(answer);
}
}
주어진 N개의 숫자 중 가장 많이 등장한 숫자를 출력하는 문제입니다.
우선순위 큐에 오름차순으로 입력된 모든 숫자를 담아주고, 순차적으로 개수를 카운트하여 가장 많은 숫자를 출력하면 해결할 수 있습니다.
오늘은 가벼운 정렬문제를 하나 풀어보았어요!