Algorithm/BAEKJOON

[Java] 1427 소트인사이드

곽수진 2023. 4. 23. 12:30
반응형

문제

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

 

입력

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

 

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

 

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        int[] arr = new int[str.length()];
        
        for(int i=0; i<str.length(); i++){
            arr[i] = Integer.parseInt(str.substring(i, i+1));
        }
        
        for(int i=0; i<str.length(); i++){
            int max = i;
            for(int j=i+1; j<str.length(); j++){
                if(arr[j] > arr[max])
                    max = j;
            }
            if(arr[i]<arr[max]){
                int temp = arr[i];
                arr[i] = arr[max];
                arr[max] = temp;
            }
        }
        for(int i=0; i<str.length(); i++){
            System.out.print(arr[i]);
        }
    }
}

String str = scanner.next() : 사용자로부터 숫자를 String으로 입력 받음

int[] arr = new int[str.length()] : 이후 자릿수 단위로 분리한 숫자들을 저장해둘 int형 배열 arr를 str 크기만큼 선언함

for(int i=0; i<str.length(); i++){ arr[i] = Integer.parseInt(str.substring(i, i+1)) } : substring() 함수를 사용해서 자릿수 단위로 분리함

 

for(int i=0; i<str.length(); i++){
    int max = i;
    for(int j=i+1; j<str.length(); j++){
        if(arr[j] > arr[max])
            max = j;
    }
    if(arr[i]<arr[max]){
        int temp = arr[i];
        arr[i] = arr[max];
        arr[max] = temp;
    }
}

▶ 초기에는 max 값을 현재 있는 인덱스에 지정된 값으로 초기화 함

▶ 현재 있는 인덱스 값+부터 문자열 끝까지 반복하며 범위 내에서 max값을 찾음

▶ 현재 i의 값과 max의 값 중 max의 값이 더 크면 swap 해줌

 

▶ for(int i=0; i<str.length(); i++){ System.out.print(arr[i]) } : 배열에 저장되어 있는 원소 값들을 출력함

System.out.print : (개행문자 X) 데이터를 출력 후 줄바꿈을 하지 않음
System.out.println : (개행문자 O) 데이터를 출력 후 자동으로 다음 줄로 넘어감

 

반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[Java] 11004 K번째 수  (0) 2023.04.26
[Java] 11399 ATM  (0) 2023.04.25
[Java] 1377 버블 소트  (2) 2023.04.22
[Java] 2750 수 정렬하기  (0) 2023.04.21
[Java] 11286 절댓값 힙  (0) 2023.04.20