[JAVA] 프로그래머스 : 특이한 정렬

조예빈·2024년 9월 21일
0

Coding Test

목록 보기
141/146
post-custom-banner

https://school.programmers.co.kr/learn/courses/30/lessons/120880

Comparator를 사용하면 쉽게 문제가 풀린다. compare메소드 안에 diffA와 diffB를 선언해준 후 문제를 풀면 된다. 이 문제를 풀고 나니 Comparator에 대한 감이 잡힌 것 같다.

import java.util.*;

class Solution {
    public ArrayList solution(int[] numlist, int n) {
        int[] answer = {};
        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 a, Integer b){
                int diffA = Math.abs(a-n);
                int diffB = Math.abs(b-n);
                
                if(diffA == diffB){
                    //같으면 숫자가 큰 게 우선
                    return b-a;
                }
                return diffA - diffB;
            }
        });
        return list;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러
post-custom-banner

0개의 댓글