import java.util.*;
class Main {
public int solution(int[] arr, int n, int k) {
int answer = -1;
TreeSet<Integer> Tset = new TreeSet<>(Collections.reverseOrder());
for(int i=0; i<n; i++){
for(int j=i+1; j<n; j++){
for(int l=j+1; l<n; l++){
Tset.add(arr[i]+arr[j]+arr[l]);
}
}
}
int cnt=0;
for(int x : Tset){
cnt++;
if(cnt==k) return x;
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++){
arr[i]=sc.nextInt();
}
System.out.println(T.solution(arr, n, k));
}
}
Treeset: 중복 제거, 정렬 가능
기본적으로 오름차순이고 Collections.reverseOrder()를 하면 내림차순이 된다.
삼중 for문을 돌며 3개의 경우의 수를 뽑아 Treeset 자료구조에 추가한다. 이 때 중복되면 안되므로 안의 for문은 바깥 for문의 첫번째 원소 그 다음부터 시작한다.
그리고 추가된 Treeset의 k번째수를 구한다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 10546번- 배부른 마라토너 (0) | 2022.07.06 |
---|---|
[JAVA] 백준 1822번- 차집합 (0) | 2022.07.06 |
[JAVA] 알고리즘 : Hash, sliding window - 매출액의 종류 (0) | 2022.07.05 |
[JAVA] 알고리즘 : HashMap - 아나그램 (0) | 2022.07.04 |
[JAVA] 알고리즘 : HashMap - 학급 회장 (0) | 2022.07.04 |