treeset - 중복제거용으로 많이 사용
1~100 사이의 자연수가 적힌 카드 중 3개를 뽑았을때 합이 k번째로 큰 값 구하기, 자연수는 중복 가능
treeset을 사용하여 중복없이 뽑을 수 있다
3중for문으로 i = 0; j = i+1, k = j+1 조건으로 해 두면 뽑는 카드는 중복이 되지 않는다!
TreeSet<Integer> tset = new TreeSet<>(Collections.reverseOrder()); - reverseOrder로 내림차순
import java.util.*;
public class Main {
public int Solution(int a, int b, int[] arr){
int ans = 0, cnt = 0;
TreeSet<Integer> tset = new TreeSet<>(Collections.reverseOrder());
for (int i = 0; i < a; i++)
for(int j = i+1; j < a; j++){
for (int k = j+1; k < a; k++){
//3개 더한 값이 중복이 되지 않게 한번에 더하기
tset.add(arr[i]+arr[j]+arr[k]);
}
}
for(int x : tset) {
cnt++;
if(cnt == b){
return x;
}
}
if(b > a) ans = -1;
return ans;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int[] arr = new int[a];
for(int i = 0; i < a; i++) arr[i] = in.nextInt();
System.out.print(T.Solution(a,b,arr));
}
}
'알고리즘 이전 > HashMap,TreeSet' 카테고리의 다른 글
모든 아나그램 찾기(해쉬, 슬라이딩 윈도우, 투포인터) (0) | 2023.08.05 |
---|---|
매출액의 종류(해쉬,투포인터) (0) | 2023.08.04 |
아나그램(해쉬) (0) | 2023.08.04 |
학급 회장(해쉬) (0) | 2023.08.03 |