import java.util.*;
class Main {
public int solution(int K, int[] arr) {
int answer = 0;
ArrayList<Integer> arrList = new ArrayList<>();
int sum = 0;
int lt = 0;
for (int a = 0; a < arr.length - 2; a++) {
for (int b = a + 1; b < arr.length - 1; b++) {
for (int c = b + 1; c < arr.length; c++) {
sum = arr[a] + arr[b] + arr[c];
if (!arrList.contains(sum)) {
arrList.add(sum);
}
}
}
}
arrList.sort(null);
if (arrList.size() - K >= 0)
answer = arrList.get(arrList.size() - K);
else
answer = -1;
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int N = kb.nextInt();
int K = kb.nextInt();
int[] arr = new int[N];
for (int i = 0; i < N; i++)
arr[i] = kb.nextInt();
System.out.print(T.solution(K, arr));
kb.close();
}
}
import java.util.*;
class Main {
public int solution(int N, int K, int[] arr) {
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 kb = new Scanner(System.in);
int N = kb.nextInt();
int K = kb.nextInt();
int[] arr = new int[N];
for (int i = 0; i < N; i++)
arr[i] = kb.nextInt();
System.out.print(T.solution(N, K, arr));
kb.close();
}
}
중복을 허용하지 않고 정렬을 지원하는 자료구조인 TreeSet을 사용
Set은 중복 제거에 많이 사용한다.
TreeSet<Integer> Tset = new TreeSet<>(Collections.reverseOrder()); // 역순정렬
Tset.first(); // first 값
Tset.last(); // last 값
기억해두깅
'알고리즘 > JAVA' 카테고리의 다른 글
2. 괄호문자제거 (0) | 2021.09.22 |
---|---|
1. 올바른 괄호 (0) | 2021.09.22 |
1. 두 배열 합치기 (0) | 2021.09.21 |
4. 모든 아나그램 찾기 (0) | 2021.09.20 |
3. 매출액의 종류 (0) | 2021.09.20 |
댓글