본문 바로가기
백준

[1427] 소트인사이드 (JAVA)

by 댈팽이 2024. 3. 23.
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