[프로그래머스] 특이한 정렬(Java)

수경·2022년 12월 12일
0

problem solving

목록 보기
75/174

프로그래머스 - 특이한 정렬

풀이

  1. List 정렬 함수 sort 사용

  2. 정렬 기준을 바꿔주자!
    n을 기준으로 가까운 수 ➡️ 각각 숫자에서 n을 뺀 절댓값

  3. 바뀐 기준으로 내림차순 정렬 후 오름차순 정렬
    ➡️ 처음부터 오름차순 정렬을 하면, 절댓값이 같은 숫자들의 위치가 원하는 대로 나오지 않음


코드

import java.util.*;

public class UniqueSort {
	public int[] solution(int[] numlist, int n) {
		List<Integer> nums = new ArrayList<>();
		Arrays.sort(numlist);
		for (int num : numlist) nums.add(num);
		nums.sort((s1, s2) -> Integer.compare(Math.abs(s2 - n), Math.abs(s1 - n)));
		Collections.reverse(nums);
		return nums.stream().mapToInt(num -> num).toArray();
	}

	public static void main(String[] args) {
		UniqueSort uniqueSort = new UniqueSort();
		String output1 = Arrays.toString(uniqueSort.solution(new int[]{1, 2, 3, 4, 5, 6}, 4));
		System.out.println(output1 + " " + output1.equals("[4, 5, 3, 6, 2, 1]"));

		String output2 = Arrays.toString(uniqueSort.solution(new int[]{10000, 20, 36, 47, 40, 6, 10, 7000}, 30));
		System.out.println(output2 + " " + output2.equals("[36, 40, 20, 47, 10, 6, 7000, 10000]"));

		String output3 = Arrays.toString(uniqueSort.solution(new int[]{10,9,8,7,6,5,4,3,2,1,11}, 6));
		System.out.println(output3 + " " + output3.equals("[6, 7, 5, 8, 4, 9, 3, 10, 2, 11, 1]"));
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글