문제
https://school.programmers.co.kr/learn/courses/30/lessons/120880
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
< 특이한 정렬 >
문제 풀이 (Java)
import java.util.*;
class Solution {
public int[] solution(int[] numlist, int n) {
int[] answer = new int[numlist.length];
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < numlist.length; i++) {
list.add(numlist[i]);
}
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (Math.abs(n - o1) == Math.abs(n - o2)) {
return o2 - o1;
}
return Math.abs(n - o1) - Math.abs(n - o2);
}
});
for (int i = 0; i < numlist.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
numlist 값을 ArrayList에 저장한 후 정렬한다. 이때, 정렬 기준을 n과 차잇값이 적은 순으로, 만약 차잇값이 같다면 내림차순으로 정한다. 정렬된 ArrayList 값을 answer에 저장한 후 반환한다.

출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'🌞Algorithm > 🔥programmers' 카테고리의 다른 글
| [programmers] 연속된 수의 합 (0) | 2026.10.06 |
|---|---|
| [programmers] 다음에 올 숫자 (0) | 2026.10.01 |
| [programmers] 컨트롤 제트 (0) | 2026.09.30 |
| [programmers] 문자열 계산하기 (0) | 2026.09.17 |
| [programmers] 로그인 성공? (0) | 2026.09.16 |