반응형
문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 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 |