[programmers] 특이한 정렬 - Java
정수 n과 가까운 수부터 정렬하는 문제를 해결하는 자바 코드를 제시하였다. 주어진 배열을 오름차순으로 정렬한 후, 이중 for문을 통해 배열의 요소를 다른 모든 배열 요소와 비교해서 n과 더 가까운 값을 앞으로 옮기는 방식을 사용하였다. 이 과정에서 더 효율적인 코드를 작성해야 함을 인식하였다.
Feb 05, 2024
문제 설명
정수
n
을 기준으로 n
과 가까운 수부터 정렬하려고 합니다. 이때 n
으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist
와 정수 n
이 주어질 때 numlist
의 원소를 n
으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.제한사항
- 1 ≤
n
≤ 10,000
- 1 ≤
numlist
의 원소 ≤ 10,000
- 1 ≤
numlist
의 길이 ≤ 100
numlist
는 중복된 원소를 갖지 않습니다.
입출력 예
numlist | n | result |
[1, 2, 3, 4, 5, 6] | 4 | [4, 5, 3, 6, 2, 1] |
[10000,20,36,47,40,6,10,7000] | 30 | [36, 40, 20, 47, 10, 6, 7000, 10000] |
입출력 예 설명
입출력 예 #1
- 4에서 가까운 순으로 [4, 5, 3, 6, 2, 1]을 return합니다.
- 3과 5는 거리가 같으므로 더 큰 5가 앞에 와야 합니다.
- 2와 6은 거리가 같으므로 더 큰 6이 앞에 와야 합니다.
입출력 예 #2
- 30에서 가까운 순으로 [36, 40, 20, 47, 10, 6, 7000, 10000]을 return합니다.
- 20과 40은 거리가 같으므로 더 큰 40이 앞에 와야 합니다.
solution.java
import java.util.*; class Solution { public int[] solution(int[] numlist, int n) { Arrays.sort(numlist); for(int i=0; i<numlist.length; i++){ for(int j=0; j<numlist.length; j++){ if(Math.abs(n-numlist[i])<=Math.abs(n-numlist[j])){ int tmp = numlist[i]; numlist[i] = numlist[j]; numlist[j] = tmp; } } } return numlist; } }
핵심 키워드
- 배열을 오름차순으로 정렬한 후, 이중 for문을 통해 배열의 요소를 다른 모든 배열 요소와 비교해서 n과 더 가까운 값을 앞으로 옮길 수 있다.
결론!
해당 문제를 풀면서 더 효율적인 코드를 생각해봐야겠다고 느꼈다.
Share article