문제 링크 : https://www.acmicpc.net/problem/2075


주어진 숫자 중에서 N 번째로 큰 수를 출력하는 문제입니다.


1. 굉장히 간단하게 N*N 크기의 배열을 만들어서 수를 넣고 정렬해버리면 되긴 합니다.



<결과>



2. 하지만 시간을 좀더 줄여보기 위해 PriorityQueue를 사용할 수 있습니다.


우선순위 큐는 아시다싶이 일반 큐와 달리 우선순위를 비교해서 자동으로 정렬이 되는 자료구조입니다.


정렬 조건을 직접 설정할 수도 있고, 기본적으로 Integer 형으로 선언 하면 작은 수가 제일 먼저 pop 됩니다.


우선순위큐의 사이즈를 N 만큼 유지하면서 삽입/삭제를 반복하면 마지막에 남는 peek() 값이 N 번째로 큰 수가 됩니다.



<결과>



생각보다 속도가 많이 줄지는 않았습니다.


3. 조금이라도 더 줄여보기 위해 peek과 비교하는 작업을 추가합니다.



<결과>


+ Recent posts