🌞Algorithm/🔥programmers

[programmers] 특이한 정렬

뿌야._. 2026. 10. 7. 11:39
문제
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