자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴하는 문제임.
| n | return |
|---|---|
| 12345 | [5,4,3,2,1] |
제한 조건
숫자를 문자열로 변환한 뒤 toCharArray()로 char 배열을 만들고, index를 뒤에서부터 순회하면서 int 배열에 담는 방식으로 접근함.
StringBuilder.reverse() 같은 라이브러리 쓰지 않고 index를 직접 역순으로 돌리는 방식 선택함.
n이 10,000,000,000 → int 범위(약 21억) 초과 →
long타입 필수!
'5' - '0' = 53 - 48 = 5
char는 내부적으로 ASCII 코드값이라서 '0'(48)을 빼면 실제 숫자가 나옴.
import java.util.*;
class Solution {
public int[] solution(long n) {
String numberParam = String.valueOf(n);
char[] charArr = numberParam.toCharArray();
int index = charArr.length - 1;
int i = 0;
int[] answer = new int[charArr.length];
while (index >= 0) {
answer[i] = charArr[index] - '0'; // char → int 변환
index--;
i++;
}
return answer;
}
}
12345 (long)
↓ String.valueOf()
"12345" (String)
↓ toCharArray()
['1','2','3','4','5'] (char[])
↓ 역순 순회 (index: 4 → 0)
↓ charArr[index] - '0'
[5, 4, 3, 2, 1] (int[])
import java.util.*;
class Solution {
public int[] solution(long n) {
String reversed = new StringBuilder(String.valueOf(n))
.reverse()
.toString();
int[] answer = new int[reversed.length()];
for (int i = 0; i < reversed.length(); i++) {
answer[i] = reversed.charAt(i) - '0';
}
return answer;
}
}
StringBuilder의 reverse() 메서드로 문자열을 먼저 뒤집고 순서대로 순회하는 방식임.
index 역순 계산 없이 직관적으로 읽히는 장점 있음.
import java.util.*;
class Solution {
public int[] solution(long n) {
return new StringBuilder(String.valueOf(n))
.reverse()
.chars()
.map(c -> c - '0')
.toArray();
}
}
reverse() 후 .chars()로 IntStream 변환, .map()으로 char → int 처리까지 한 줄 체이닝으로 해결함.
코드가 짧고 모던한 스타일이지만 가독성은 호불호 갈릴 수 있음.
| 방법 | 특징 | 스타일 |
|---|---|---|
| index 역순 순회 (본 풀이) | 직관적, 본질적, 라이브러리 의존 없음 | 절차형 |
| StringBuilder.reverse() | 간결, 뒤집기 의도 명확 | 절차형 |
| Stream + chars() | 코드 짧고 모던함 | 함수형 |
int vs long 타입 먼저 확인하는 습관 들여야 함char - '0' 패턴으로 문자를 숫자로 변환할 수 있음reverse() 안 써도 index 역순 순회로 충분히 해결 가능함