문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.
입출력 예
n return
12345 [5,4,3,2,1]
class Solution {
public int[] solution(long n) {
String s = String.valueOf(n);
int[] answer = new int[s.length()];
for(int i = 0; i < answer.length; i++) {
answer[i] = Integer.parseInt(s.substring(answer.length-1-i, answer.length-i));
}
return answer;
}
}
포인트는 String 문자열로 바꾸는 String.valueOf를 통해 자연수를 문자열로 사용하게 바꾸는 것!
이후 반복문을 이용해 문자를 다시 Integer.parseInt()로 Parsing 하여 각 배열 요소에 저장한다.
다른 사람들의 풀이
class Solution {
public int[] solution(long n) {
String a = "" + n;
int[] answer = new int[a.length()];
int cnt=0;
while(n > 0) {
answer[cnt]=(int)(n%10);
n/=10;
System.out.println(n);
cnt++;
}
return answer;
}
}
"" + n 할 경우 Java 내부적으로 StringBuffer가 생성된다.
"" + n 같은 경우, 따지고 보면 new StringBuffer() 후, append 한 것과 같은 원리!
이후 숫자를 10으로 나눈 나머지, 즉 1보다 크면 1의 자리를 반환하는 규칙을 이용하여,
배열의 인덱스 순서에 맞게 숫자를 뒤집어 넣어주게 된다.