[programmers] 특이한 정렬 - Java

정수 n과 가까운 수부터 정렬하는 문제를 해결하는 자바 코드를 제시하였다. 주어진 배열을 오름차순으로 정렬한 후, 이중 for문을 통해 배열의 요소를 다른 모든 배열 요소와 비교해서 n과 더 가까운 값을 앞으로 옮기는 방식을 사용하였다. 이 과정에서 더 효율적인 코드를 작성해야 함을 인식하였다.
Feb 05, 2024
[programmers] 특이한 정렬 - Java

문제 설명

정수 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

More articles

See more posts
RSSPowered by inblog