소트인사이드
23 June 2019
문제 : https://www.acmicpc.net/problem/1427
이번은 내림차순으로 정렬하는 문제를 풀어보도록 하겠습니다.
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String value = sc.next();
int[] strArr = new int[value.length()];
for (int i = 0; i < strArr.length; i++) {
strArr[i] = Integer.parseInt(String.valueOf(value.charAt(i)));
}
qSort(strArr, 0, strArr.length - 1);
for (int i = strArr.length - 1; i >= 0; i--) {
System.out.print(strArr[i]);
}
}
private static void qSort(int[] arr, int start, int end) {
if (start < end) {
int partition = getPartition(arr, start, end);
qSort(arr, start, partition - 1);
qSort(arr, partition + 1, end);
}
}
private static int getPartition(int[] arr, int start, int end) {
int pivot = arr[end];
int i = start - 1;
for (int k = start; k < end; k++) {
if (arr[k] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[end];
arr[end] = temp;
return i + 1;
}
}
이번 문제에서는 quick sort를 이용해 받은 string을 정렬한 이후, 뒤에서부터 출력해주도록 합니다.