알고리즘/백준
[백준] 1432 - 자바
삼록이
2025. 7. 23. 12:06
https://www.acmicpc.net/problem/1427
정렬 문제다. 주어진 N의 자릿수가 최대 10자리에 시간제한이 2초이므로, 어떠한 정렬로 풀어도 문제없다.
여기서는 선택정렬을 통해 풀어보았다.
선택정렬을 통해 내림차순을 구현해가는 과정이므로, 최댓값을 찾는다.
그리고 최댓값을 기존의 제일 앞에 있는 값을 현재 최댓값과 위치를 바꿔야한다.
이렇게 턴을 돌때마다 앞의 자리부터 확정해나가므로 다음 턴 때도 처음부터 돌 필요는 없다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
/*
1.n을 받고 toCharArray로 배열로 만든다음 int배열로 변환한다
2.최댓값을 찾는다.
3.최댓값을 제일 앞에 배치한다.
4.한번 턴을 돌때마다 제일 앞에는 확정이 되었다.
5.이를 자릿수만큼 반복한다
*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String n = br.readLine();
char[] charArr = n.toCharArray();
int[] arr = new int[charArr.length];
for(int i=0; i<arr.length; i++){
arr[i] = charArr[i]-'0';
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<arr.length; i++){
int max =-1;
int var =0;
for(int j=i+1; j<arr.length; j++){
if(arr[j]>max){
max=arr[j];
var=j;
}
}
if(max>arr[i]){
arr[var] =arr[i];
arr[i]=max;
}
}
for(int a: arr){
sb.append(a);
}
System.out.println(sb);
}
}