[코테4_5] K번째 큰 수

byeol·2022년 12월 6일
0

코딩테스트

목록 보기
28/42
  • Set은 get(index)처럼 index값을 가지고 올 수 있는 메서드가 없음
Iterator iter = set.iterator();	// Iterator 사용
while(iter.hasNext()) {//값이 있으면 true 없으면 false
    System.out.println(iter.next());
}
  • 따라서 Set을 Array로 바꾸는 법
import java.util.Arrays;
import java.util.Set; 
import com.google.common.collect.Sets;
public class SetToArray {  

public static void main(String[] args) {   
// Set 객체      
Set<Integer> set = Sets.newHashSet(1, 2, 3, 4);         // Set -> 배열      
Integer[] arr = set.toArray(new Integer[0]);  
//배열의 크기를 0으로 지정하면 자동으로 배열의 크기 지정
// 배열 출력        
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4]   
}}
  • 기본이 오름차순인데
    내림차순으로 바꾸는 법
	 Arrays.sort(arr1,Collections.reverseOrder());

✔️ 답은 맞는데 시간초과이다...

import java.util.*;


public class Main {
 public static int solution(int A, int B, int[] arr){
	 Set<Integer> set = new TreeSet();
	 for(int i=0;i<A;i++) {
		 for(int j=0;j<A;j++) {
			 for(int z=0;z<A;z++) {
				 if(i!=j &&j!=z&&z!=i)set.add(arr[i]+arr[j]+arr[z]);
			 }
		 }
	 }
	 Integer[] arr1 = set.toArray(new Integer[0]);  
	 Arrays.sort(arr1,Collections.reverseOrder());
	 return arr1[B-1];
	
	 
 }
 public static void main(String[] args){
  Scanner kb = new Scanner(System.in);
  int A = kb.nextInt();
  int B = kb.nextInt();
  int[] arr = new int[A];
  for(int i=0;i<A;i++) {
	  arr[i]=kb.nextInt();
  }
  System.out.println(solution(A,B,arr));
 }
}

✔️강의 답

import java.util.*;


public class Main {
 public static int solution(int A, int B, int[] arr){
	 Set<Integer> set = new TreeSet<>(Collections.reverseOrder());
	 for(int i=0;i<A;i++) {
		 for(int j=i+1;j<A;j++) {
			 for(int z=j+1;z<A;z++) {
			   set.add(arr[i]+arr[j]+arr[z]);
			 }
		 }
	 }
	 int c=0;
            for(int x : set){
               c++;
               if(c==B) return x;
             }
	 return -1;
	
	 
 }
 public static void main(String[] args){
  Scanner kb = new Scanner(System.in);
  int A = kb.nextInt();
  int B = kb.nextInt();
  int[] arr = new int[A];
  for(int i=0;i<A;i++) {
	  arr[i]=kb.nextInt();
  }
  System.out.println(solution(A,B,arr));
 }
}
profile
꾸준하게 Ready, Set, Go!

0개의 댓글