// 정수 num 이 주어졌을 때,
// num 숫자에서 두 자리를 최대 한번만 교체하여 얻을 수 있는 최대값을 출력하세요.
// 입출력 예시
// num: 2736
// 출력: 7236
// 입력: 7116
// 출력: 7611
public class Main {
public static int solution(int num) {
char[] chars = String.valueOf(num).toCharArray();
int max = Integer.MIN_VALUE;
int[] maxArr = new int[chars.length];
for (int i = chars.length - 1; i >= 0; i--) {
max = Math.max(max, chars[i] - '0');
maxArr[i] = max;
}
for (int i = 0; i < chars.length; i++) {
if (chars[i] - '0' < maxArr[i]) {
// 원본 idx 찾기
for (int j = maxArr.length - 1; j >= 0; j--) {
if (maxArr[i] == maxArr[j]) {
swap(chars, i, j);
return Integer.parseInt(String.valueOf(chars));
}
}
}
}
return num;
}
private static void swap(char[] chars, int originIdx, int targetIdx) {
char tmp = chars[originIdx];
chars[originIdx] = chars[targetIdx];
chars[targetIdx] = tmp;
}
public static void main(String[] args) {
// Test code
System.out.println(solution(2736));
System.out.println(solution(7116));
System.out.println(solution(91));
}
}