728x90
반응형
※ 문제 설명
정수 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이 앞에 와야 합니다.
나의 풀이
import java.lang.Math;
class Solution {
public int[] solution(int[] numlist, int n) {
int len = numlist.length;
int[] answer = new int[len];
for(int i=0; i<len; i++) {
for(int j=i+1; j<len; j++) {
if(Math.abs(n - numlist[i]) < Math.abs(n - numlist[j])) {
int tmp1 = numlist[i];
numlist[i] = numlist[j];
numlist[i] = tmp1;
} else if(Math.abs(n - numlist[i]) > Math.abs(n - numlist[j])){
int tmp2 = numlist[j];
numlist[j] = numlist[i];
numlist[i] = tmp2;
} else if(Math.abs(n - numlist[i]) == Math.abs(n - numlist[j])) {
if(numlist[i] > numlist[j]) {
int tmp3 = numlist[i];
numlist[i] = numlist[j];
numlist[i] = tmp3;
} else {
int tmp4 = numlist[j];
numlist[j] = numlist[i];
numlist[i] = tmp4;
}
}
}
}
for(int i=0; i<len; i++) {
answer[i] = numlist[i];
}
return answer;
}
}
다른 사람의 풀이
import java.util.*;
class Solution {
public int[] solution(int[] numlist, int n) {
int size = numlist.length;
for(int i=0; i<size-1; i++){
for(int k=i+1; k<size; k++){
int a = (numlist[i] - n) * (numlist[i] > n ? 1 : -1);
int b = (numlist[k] - n) * (numlist[k] > n ? 1 : -1);
if(a > b || (a == b && numlist[i] < numlist[k])){
int temp = numlist[i];
numlist[i] = numlist[k];
numlist[k] = temp;
}
}
}
return numlist;
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 다항식 더하기 (LV.0) (0) | 2023.02.14 |
---|---|
[프로그래머스][JAVA] 저주의 숫자 3 (LV.0) (0) | 2023.02.14 |
[프로그래머스][JAVA] 문자열 밀기 (LV.0) (0) | 2023.02.13 |
[프로그래머스][JAVA] 등수 매기기 (LV.0) (0) | 2023.02.13 |
[프로그래머스][JAVA] 유한소수 판별하기 (LV.0) (0) | 2023.02.13 |