[Programmers] Lv0 특이한 정렬 Java
2023. 2. 1. 13:28ㆍCS/자료구조 & 알고리즘
728x90
문제 출처
[프로그래머스 코딩 테스트 연습]
https://school.programmers.co.kr/learn/courses/30/lessons/120880
문제 풀이
- 자바에는 배열을 비교할 때 Arrays.sort()를 이용하면 편하다
- Arrays.sort에 주어지는 익명 객체 Comparator를 작성하면 Comparator 바탕으로 정렬이 된다.
- compare 메소드에서 비교 방식을 설정할 수 있다.
- Math.abs로 절댓값을 얻는 방식을 통하여 거리를 얻도록 했다.
- 거리가 같다면 큰 수를 앞으로 가져가게 했다.
- 거리가 다르다면 거리가 가까운 순으로 정렬을 하도록 하였다.
소스 코드
import java.util.Arrays;
import java.util.Comparator;
public class Solution {
public int[] solution(int[] numlist, int n) {
Integer[] arr = Arrays.stream(numlist).boxed().toArray(Integer[]::new);
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int a = Math.abs(o1-n);
int b = Math.abs(o2-n);
if (a == b)
return o2 - o1;
return a - b;
}
});
return Arrays.stream(arr).mapToInt(i->i).toArray();
}
}
728x90
'CS > 자료구조 & 알고리즘' 카테고리의 다른 글
[Programmers] Lv0 유한소수 판별하기 Java (0) | 2023.02.02 |
---|---|
[Programmers] Lv0 등수 매기기 Java (0) | 2023.02.02 |
[Programmers] Lv0 저주의 숫자 3 Java (0) | 2023.01.31 |
[Programmers] Lv0 다항식 더하기 Java (0) | 2023.01.30 |
[Programmers] Lv0 최빈값 구하기 Java (0) | 2023.01.29 |