특이한 정렬 Lv. 0

박영준·2023년 8월 26일
0

코딩테스트

목록 보기
294/300
class Solution {
    public int[] solution(int[] numlist, int n) {
        int[] answer = {};
        return answer;
    }
}

해결법

방법 1

import java.util.*;

class Solution {
    public int[] solution(int[] numlist, int n) {

        for (int i = 0; i < numlist.length - 1; i++) {
            for (int j = i + 1; j < numlist.length; j++) {
                // 차이값(절대값으로)
                int a = Math.abs(numlist[i] - n);
                int b = Math.abs(numlist[j] - n);
                
                // 배치
                if (a > b || (a == b && numlist[i] < numlist[j])) {
                    int temp = numlist[i];
                    numlist[i] = numlist[j];
                    numlist[j] = temp;
                }
            }
        }
        
        return numlist;
    }
}

중첩 for문을 기본으로 사용한다.

차이값(절대값으로)

  • Math.abs(numlist[i] - n)
    • (numlist[i] - n) * (numlist[i] > n ? 1 : -1) 으로 표현도 가능

배치

  • 거리가 같을 경우, 더 큰 수를 앞에 오도록 하기 위해 임시 변수 temp 로 두 배열의 위치를 바꿔준다.

특이한 정렬 Lv. 0

profile
개발자로 거듭나기!

0개의 댓글