문제 설명

해설 :
1. 숫자를 쪼개기 위해 문자열(String)로 변환
숫자 상태에서는 각 자릿수를 분리하기가 꽤 까다롭습니다.
그래서 "" + n 이라는 아주 간단한 방법으로 숫자를 문자로 만들었습니다.
2. substring으로 한 글자씩 배열에 담기
문자열의 길이를 구해서 그만큼의 방을 가진 배열을 만들고,
for문을 돌면서 substring으로 1글자씩 똑똑 끊어서 배열에 채워 넣었습니다.
3. Arrays.sort()의 함정 피하기
자바의 Arrays.sort()는 기본적으로 오름차순(작은 수부터) 정렬을 해줍니다.
내림차순(큰 수부터)으로 바꾸는 기능도 있지만,
아직 초보 단계에서는 배열의 타입 문제(Primitive vs Wrapper)로 꽤 복잡한 설정이 필요합니다.
4. 거꾸로 반복문 돌리기 (나만의 내림차순 비법!)
오름차순으로 예쁘게 정렬된 배열을 굳이 어려운 코드로 내림차순 정렬할 필요가 있을까요?
그냥 배열의 맨 뒤(가장 큰 숫자)부터 맨 앞(가장 작은 숫자)을 향해 거꾸로 반복문(i--)을 돌면서
글자를 덧붙여 주면 그게 바로 내림차순입니다!
5. Long.parseLong() 주의
문제가 요구하는 숫자의 범위가 80억 이하이므로,int를 쓰면 오버플로우가 발생합니다.
마지막에 문자열을 진짜 숫자로 바꿀 때는 반드시 Long.parseLong()을 써서
long 타입인 answer에 넣어주어야 완벽하게 통과합니다.
풀이한 코드🔽
더보기
import java.util.Arrays;
class Solution {
public long solution(long n) {
long answer = 0;
// 1. 숫자를 문자열로 변환
String str = "" + n;
// 2. 한 글자씩 담을 배열 생성
String[] arr = new String[str.length()];
// 3. substring으로 잘라서 배열에 넣기
for (int i = 0; i < str.length(); i++) {
arr[i] = str.substring(i, i + 1);
}
// 4. 배열 오름차순 정렬
Arrays.sort(arr);
// 5. 뒤에서부터 읽어서 내림차순 문자열 만들기
String reverseStr = "";
for (int i = arr.length - 1; i >= 0; i--) {
reverseStr = reverseStr + arr[i];
}
// 6. 문자열을 long 숫자로 변환하여 반환
answer = Long.parseLong(reverseStr);
return answer;
}
}
'Daily 코드카타' 카테고리의 다른 글
| [코드카타] 코딩테스트입문 : 정수 제곱근 판별 - 2026.06.26 풀이 (0) | 2026.07.10 |
|---|---|
| [코드카타] 코딩테스트입문 : 문자열을 정수로 바꾸기 - 2026.06.25 풀이 (0) | 2026.06.25 |
| [코드카타] 코딩테스트입문 : 자연수 뒤집어 배열로 만들기 - 2026.06.24 풀이 (0) | 2026.06.24 |
| [코드카타] 코딩테스트입문 : x만큼 간격이 있는 n개의 숫자- 2026.06.24 풀이 (0) | 2026.06.24 |
| [코드카타] 코딩테스트입문 : 나머지가 1이 되는 수 찾기 - 2026.06.22 풀이 (0) | 2026.06.22 |