<4.5> K 번째 큰수

mutexlocking·2022년 10월 23일
0

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);

    }
}
profile
개발자가 되고자 try 하는중

0개의 댓글