문제를 읽고 든 생각은 그냥 입력값을 내림차순으로 정렬한 다음에 출력하면 되는 문제 아니야? Arrays.sort() 사용해야지~라고 생각했다.
하지만 Arrays.sort(arr, Comparator.reverseOrder());
를 사용하는 경우, 기본 타입 배열은 래퍼클래스로 만들어야 한다.
그래서 두 가지 방법을 생각했다.
Arrays.sort()
를 사용하자.Arrays.sort()
를 사용하지 않고, 버블 정렬이나 선택 정렬을 사용하자.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));
String s = br.readLine();
int len = s.length();
// 1. 입력받은 s를 배열로 변환
String[] strs = new String[len];
for(int i=0;i<len;i++){
strs[i] = String.valueOf(s.charAt(i));
}
// 2. 내림차순으로 배열 정렬
Arrays.sort(strs, Comparator.reverseOrder());
// 3. 배열 출력
for(int i=0;i< len;i++){
System.out.print(strs[i]);
}
}
}
s.charAt(i)
String.valueOf()
를 사용해서 String 타입으로 변경해주었다.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));
String s = br.readLine();
int len = s.length();
// 1. 입력받은 s를 배열로 변환
String[] strs = s.split("");
// 2. 내림차순으로 배열 정렬
Arrays.sort(strs, Comparator.reverseOrder());
// 3. 배열 출력
for(int i=0;i< len;i++){
System.out.print(strs[i]);
}
}
}
s.split("")
을 사용했다.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int len = s.length();
// 1. 입력받은 string을 int[] 배열로 변환
int n = s.length();
int[] arr = new int[n];
for(int i=0;i<n;i++){
arr[i] = s.charAt(i) - '0';
}
int maxIndex = 0;
int tmp;
// 2. 내림차순으로 배열 정렬 - 선택정렬
for(int i=0;i< n-1;i++){
maxIndex = i;
for(int j=i+1;j< n;j++){
if(arr[maxIndex] < arr[j]){
maxIndex = j;
}
}
// swap
tmp = arr[maxIndex];
arr[maxIndex] = arr[i];
arr[i] = tmp;
}
// 3. 배열 출력
for(int i=0;i< len;i++){
System.out.print(arr[i]);
}
}
}