구름LEVEL : 이진수 정렬

후웅후웅·2024년 8월 14일

알고리즘

목록 보기
6/10

문제

import java.io.*;
import java.util.*;

class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		st = new StringTokenizer(br.readLine(), " ");
		ArrayList<Integer> arr = new ArrayList<>();
		for(int i = 0; i < N; i++){
			arr.add(Integer.parseInt(st.nextToken()));
		}
		Collections.sort(arr, new Comparator<Integer>(){
			@Override
			public int compare(Integer o1, Integer o2){
				int count1 = Integer.bitCount(o1);
				int count2 = Integer.bitCount(o2);
				if(count1 == count2){
					return o2 - o1;
				} else {
					return count2 - count1;
				}
			}
		});
		
		bw.write(String.valueOf(arr.get(K - 1)));
		bw.flush();
		br.close();
		bw.close();
	
	}
}

bitCount는 처음 배우고
Comparator는 다시...

profile
뭐든 열심히

0개의 댓글