Java Algorithm _ 이진수 정렬

song yuheon·2023년 11월 17일
0

Java Algorithm

목록 보기
13/18
post-thumbnail

문제


주어진 숫자 배열 nums를 이진수로 변환했을 때, 이진수에서 1의 개수에 따라 오름차순으로 정렬하는 프로그램을 작성합니다. 1의 개수가 같은 경우는 원래 숫자의 크기가 작은 순서대로 정렬합니다.

예시: nums = [5, 6, 7, 8, 9]는 [8, 5, 6, 9, 7]로 정렬됩니다.

제한사항:

nums의 길이는 최대 1,000입니다.
nums의 각 요소는 1 이상 100,000 이하입니다.


나의 풀이


package inflearn_231117;

import java.util.*;
class Solution3 {
	public int[] solution(int[] nums){
		int[] answer = new int[nums.length];
		List<List<Integer>> numLists = new ArrayList<>();
		
		for(int i=0;i<nums.length;i++) {
			List<Integer> numList = new ArrayList<>();
			numList.add(nums[i]);
			int temp = nums[i];
			int count=0;
			while(temp!=0) {
				if(temp%2==1) 
					count++;
				temp/=2;
			}
			numList.add(count);
			numLists.add(numList);
		}
		
		answer = numLists.stream().sorted((f1,f2)->f1.get(0)-f2.get(0))
			.sorted((n2,n3)->n2.get(1)-n3.get(1))
			.map(n4->n4.get(0))
			.mapToInt(Integer::intValue)
			.toArray();
		
		
		return answer;
	}

	public static void main(String[] args){
		Solution3 T = new Solution3();
		System.out.println(Arrays.toString(T.solution(new int[]{5, 6, 7, 8, 9})));
		System.out.println(Arrays.toString(T.solution(new int[]{5, 4, 3, 2, 1})));
		System.out.println(Arrays.toString(T.solution(new int[]{12, 5, 7, 23, 45, 21, 17})));
	}
}

결과



profile
backend_Devloper

0개의 댓글