코딩테스트/백준

백준 1427번 : 소트인사이드 [Java]

블로그 주인장 2023. 8. 29.

🎁 문제 링크

https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

🎁 문제 설명

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

🎁 입출력 예시

🎁 풀이

- Scanner로 사용자에게 입력을 받는다.

- 입력 받은 수를 split하여 각 자릿수의 숫자를 받는다.

- 큰 숫자부터 작은 숫자로 내림차순 정렬하여 출력한다.

🎁 코드 - Arrays.sort()

import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] s = scanner.nextLine().split("");

        Arrays.sort(s, Comparator.reverseOrder());
        for (int i = 0; i < s.length; i++) {
            System.out.print(s[i]);
        }
    }
}

🎁 코드 - 이중 for문(선택 정렬)

import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        String[] s = scanner.nextLine().split("");
        int[] arr = Arrays.stream(s).mapToInt(Integer::new).toArray();

        for (int i = 0; i < arr.length; i++) {
            int max = i;
            for (int j = i + 1; j < arr.length; j++) {
                if(arr[j] > arr[max]){
                    max = j;
                }
            }
            if(arr[i] < arr[max]){
                int tmp = arr[i];
                arr[i] = arr[max];
                arr[max] = tmp;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
    }
}
반응형

댓글