Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- database
- string
- java
- Math
- Binary Tree
- Matrix
- 자바
- 코딩테스트
- array
- implement
- sorting
- SQL
- Binary Search
- greedy
- Number Theory
- Data Structure
- Tree
- geometry
- 코테
- Method
- dynamic programming
- 파이썬
- simulation
- two pointers
- Class
- bit manipulation
- Stack
- 구현
- Counting
- hash table
Archives
- Today
- Total
코린이의 소소한 공부노트
[프로그래머스/Lv.0] 특이한 정렬 본문
정수 n을 기준으로 n과 가까운 수부터 정렬하려고 한다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치한다.
1. Input, Output, Example
- numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 반환
2. Constraint
1) 1 ≤ n ≤ 10,000
2) 1 ≤ numlist의 원소 ≤ 10,000
3) 1 ≤ numlist의 길이 ≤ 100
4) numlist는 중복된 원소를 갖지 않는다.
3. Code
class Solution {
static int standard;
public int[] solution(int[] numlist, int n) {
standard = n;
quicksort(numlist, 0, numlist.length-1);
return numlist;
}
static void quicksort(int[] arr, int start, int end){
if(start>=end)
return;
int pivot = start;
int i = start+1, j = end, temp;
while(i<=j) {
while(i<=end && compare(arr[i],arr[pivot]))
i++;
while(j>start && compare(arr[pivot],arr[j]))
j--;
if(i>j) {
temp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = temp;
} else {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
quicksort(arr, start, j-1);
quicksort(arr, j+1, end);
}
static boolean compare(int a, int b){ // a가 앞쪽이라면 true
int da = Math.abs(standard-a), db = Math.abs(standard-b);
if(da==db) return a>=b;
else return da<=db;
}
}
- +1
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[프로그래머스/Lv.1] 콜라 문제 (0) | 2023.06.30 |
---|---|
[프로그래머스/Lv.1] 문자열 내 마음대로 정렬하기 (0) | 2023.06.30 |
[LeetCode/Easy] 2696. Minimum String Length After Removing Substrings (0) | 2023.06.30 |
[LeetCode/Easy] 2682. Find the Losers of the Circular Game (0) | 2023.06.29 |
[LeetCode/Easy] 2678. Number of Senior Citizens (0) | 2023.06.29 |