728x90
# 문제 설명
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
# 정답 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
String input = st.nextToken();
int[] arr = new int[input.length()];
for (int i = 0; i < input.length(); i++) {
arr[i] = input.charAt(i) - '0';
}
for (int i = 0; i < arr.length; i++) {
int maxIdx = i;
for (int j = i+1; j < arr.length; j++) {
if (arr[maxIdx] < arr[j]) {
maxIdx = j;
}
}
swap(arr, i, maxIdx);
}
for (int a : arr) {
sb.append(a);
}
System.out.print(sb);
}
public static void swap(int[] arr, int a, int b) {
int num = arr[a];
arr[a] = arr[b];
arr[b] = num;
}
}
입력값을 읽고 선택 정렬을 사용하기 위해 arr 배열에 한 글자씩 저장한다.
이때 char형 값을 int형 값으로 바꾸기 위해 문자 0을 빼줘야 한다.
선택 정렬으로 arr 배열을 내림차순 정렬한다.
바깥 for문은 정렬 범위를 i부터 arr의 길이-1까지로 설정하는 역할이다.
내림차순 정렬이므로 정렬 범위 안에서의 최댓값을 찾아 arr[i]와 swap하면 된다.
maxIdx는 i로 설정하고 i+1부터 arr의 길이-1까지 arr을 돌면서 최댓값을 찾는다.
i번째 값과 maxIdx번째 값을 swap한다.

728x90
'백준' 카테고리의 다른 글
[24051] 알고리즘 수업 - 삽입 정렬 1 (JAVA) (1) | 2024.03.26 |
---|---|
[23881] 알고리즘 수업 - 선택 정렬 1 (JAVA) (0) | 2024.03.23 |
[1377] 버블 소트 (JAVA) (0) | 2024.03.23 |
[23968] 알고리즘 수업 - 버블 정렬 1 (JAVA) (1) | 2024.03.22 |
[2750] 수 정렬하기 (JAVA) (0) | 2024.03.22 |