[LeetCode] 2231. Largest Number After Digit Swaps by Parity
숫자로 이루어진 정수 num이 주어졌을 때 같은 자릿수의 숫자만 교환하여 가장 큰 정수를 만드는 문제
홀수는 홀수끼리, 짝수는 짝수끼리만 교환이 가능하다.
문제를 풀다보니 냅다 n / n+2 애들을 교환했다... 왜인지 답이 도출이 안되더라니만 🥹
(int)carr[i]
을 사용하여 ASCII 값으로 변환해버린.. 실수 import java.util.*;
class Solution {
public int largestInteger(int num) {
// 숫자를 자릿수별로 분리
char[] digits = String.valueOf(num).toCharArray();
List<Integer> evens = new ArrayList<>();
List<Integer> odds = new ArrayList<>();
// 짝수와 홀수 나누기
for (char c : digits) {
int digit = c - '0';
if (digit % 2 == 0) {
evens.add(digit);
} else {
odds.add(digit);
}
}
// 각각 내림차순 정렬
evens.sort(Collections.reverseOrder());
odds.sort(Collections.reverseOrder());
// 원래 순서대로 짝수와 홀수를 결합
StringBuilder sb = new StringBuilder();
int evenIndex = 0, oddIndex = 0;
for (char c : digits) {
int digit = c - '0';
if (digit % 2 == 0) {
sb.append(evens.get(evenIndex++));
} else {
sb.append(odds.get(oddIndex++));
}
}
// 결과 반환
return Integer.parseInt(sb.toString());
}
}