커트라인(25305)

k번째로 큰 수를 구하는 문제

(https://www.acmicpc.net/problem/25305)

문제

2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 N 명의 학생들이 응시했다.

이들 중 점수가 가장 높은 k 명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.

커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.

입력

첫째 줄에는 응시자의 수 N과 상을 받는 사람의 수 k 가 공백을 사이에 두고 주어진다.

둘째 줄에는 각 학생의 점수 x 가 공백을 사이에 두고 주어진다.

출력

상을 받는 커트라인을 출력하라.

예제 입력

5 2
100 76 85 93 98

예제 출력

일단 ArrayList을 사용해서 소팅을 하고, 이게 오름차순이니까 뒤에서부터 찾아서 출력하는 방식을 선택했고 문제도 맞았음 근데 일단 뭔가 단순 배열[] 보다 ArrayList에 익숙했고 소팅같은것도 잘 되어있어서 사용했는데 아차 싶었다 다행히도 찾아보니까 배열의 크기를 resize() 통해서 진행하는 케이스에서는 확실하게 성능이슈가 발생하지만 단순히 add(), remove() 와 같이 넣다뺐다 하면서 그렇게 많은 양을 넣고빼는게 아니기 때문에 사용해도 괜찮을 것 같다

풀이

그래도 까먹은거 같애서 배열로도 다시 풀어보았다 아오 Arrays.sort(배열, Collections.reverseOrder()) 함수에서 배열이 프리미티브 타입이면 안되고 래퍼 타입이여야 되는거였다니.... 오늘도 하나 배웠습니다 감사합니다

Last updated

Was this helpful?