1. 문제에 주어진대로 모든 3 element의 합을 다 TreeSet에 넣어도 시간 초과가 나오지 x
2. 하지만 K가 그 경우의 수보다 더 큰 경우 , -1을 출력하라는 문제의 조건을 끝까지 잘 읽자!
일단 코드 먼저 ...
import java.util.*;
public class Main {
public static void sumAllCase(int[] arr, int N, Set<Integer> treeSet){
for(int p0=0; p0<N-2; p0++){
for(int p1=p0+1; p1<N-1; p1++){
for(int p2=p1+1; p2<N; p2++){
treeSet.add(arr[p0] + arr[p1] + arr[p2]);
}
}
}
}
public static int solution(int[] arr, int N, int K){
Set<Integer> treeSet = new TreeSet<>((s1, s2) -> s2-s1);
//1. N이 7이하면 바로 적용하고 vs N이 8이상이면 내림차순 정렬 후 , subArr 8번째 element 까지만 적용
sumAllCase(arr, N, treeSet);
List<Integer> sortedSum = new ArrayList<>(treeSet);
if(sortedSum.size() < K){
return -1;
}
return sortedSum.get(K-1);
}
public static void main(String[] args){
//0. Scanner 준비
Scanner sc = new Scanner(System.in);
//1. 입력
int N = sc.nextInt();
int K = sc.nextInt();
int[] arr = new int[N];
for(int i=0; i<N; i++){
arr[i] = sc.nextInt();
}
//2 solution() 호출하여 결과 반환
int result = solution(arr, N, K);
//3. 결과 출력
System.out.println(result);
}
}