내림차순 : 최대값 찾기
오름차순 : 최소값 찾기
시간 복잡도 : O(n제곱) -> 최대값 / 최소값을 찾기 위해 n 번 * n 번 반복
알기 쉽게 과정을 손으로 따라가보자.
arr[i] = Integer.parseInt(s.substring(i, i + 1));
arr[i] = Integer.parseInt(s.substring(i));
[ 1번 코드 ]
s.substring(i, i + 1)을 사용하여 인덱스 i 에서 시작하는 길이 1 의 부분 문자열을 추출하고 정수로 변환한다.
[ 2번 코드 ]
문자열 s에서 인덱스 i 에서부터 끝까지의 부분 문자열을 추출하고 정수로 변환합니다.
최대값을 배열 값이 아닌 인덱스 번호를 통해 구현한 발상이다.
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 arr[] = new int[s.length()];
for (int i = 0; i < s.length(); i++) {
arr[i] = Integer.parseInt(s.substring(i, i + 1));
}
//최대갑을 값이 아닌 인덱스 번호로 사용한다.
for (int i = 0; i < arr.length; i++) {
int max = i; //첫 번째 인덱스를 max값으로
//i 번째 다음 구간부터
for (int j = i + 1; j < arr.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 < arr.length; i++) {
System.out.print(arr[i]);
}
}
}