문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
예제 입출력
풀이
이번 문제는 하나의 수를 입력받아서 한글자 단위로 나눠서 정렬 후 출력해주면 끝난다. 풀이방법은 첫번째로 수학적원리를 이용한 방법과 두번째로 문자열을 한 문자로 나눠서 배열로 반환해주는 toCharArray()메소드를 이용한 방법으로 풀어봤다.
코드
1. 수학적인 원리
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[] count = new int[10];
while(n!=0) {
count[n%10] +=1;
n /= 10;
}
for(int i=9; i>=0; i--) {
for(int j = 0; j<count[i]; j++)
System.out.print(i);
}
}
}
2. toCharArray() 메소드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
public class Main2 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = br.readLine();
char[] arr = s.toCharArray();
Arrays.sort(arr);
for(int i=arr.length-1; i>=0; i--)
bw.write(arr[i]);
bw.flush();
bw.close();
}
}