자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
import java.lang.StringBuilder;
import java.lang.String;
import java.lang.Character;
class Solution {
public int[] solution(long n) {
// 1. 숫자를 String으로 변경
String str = String.valueOf(n);
StringBuilder sb = new StringBuilder(str);
sb.reverse();
// 2. String 길이만큼 배열 선언
int[] answer = new int[sb.length()];
// 3. String 을 int 값으로 형변환하여 배열에 저장
for (int i = 0; i < sb.length(); i++) {
answer[i] = Character.getNumericValue(sb.charAt(i));
}
return answer;
}
}
문자열을 간단히 뒤집는 방법. StringBuilder의 reverse() 메서드를 사용한다.
String 클래스에는 reverse() 메서드가 없기 때문에 문자열을 사용하여 StringBuilder 객체를 생성한 후 reverse() 메서드를 사용해야 한다.
숫자 형태의 char 를 int 로 형변환한다.
char를 int로 바로 형변환하면 아스키코드 표에서 char 에 대응하는 int 값으로 변환되기 때문에 값이 달라진다.
따라서 형변환 후 -48을 해주어야 원하는 값을 도출할 수 있었는데, 이러한 번거로운 과정을 생략하고 형변환만 원할 시 에 사용할 수 있는 API이다.
char c = '1';
// 바로 캐스팅
int result1 = (int) c; // 1 이 아닌 49 return
// Character.getNumericValue(char) 사용
int result2 = Character.getNumericValue(c); // 1 return
import java.util.*;
class Solution {
public int[] solution(long n) {
// 1. 입력되는 숫자의 길이를 알 수 없으므로 List 선언
List<Integer> list = new LinkedList<>();
// 2. List에 값 셋팅
while (n > 0) {
// 10으로 나눈 나머지를 구하면 마지막 자리의 숫자가 도출됨
list.add((int)(n % 10));
// 한 자리씩 줄여나가기
n /= 10;
}
// 3. List를 배열로 변환
int answer[] = list.stream.mapToInt(Integer::intValue).toArray();
return answer;
}
}