자연수 뒤집어 배열로 만들기
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
n은 10,000,000,000이하인 자연수입니다.
입출력 예
작성코드
class Solution {
public int[] solution(long n) {
String s = String.valueOf(n);
int[] answer = new int[s.length()];
int cnt = 0;
while (n > 0) {
answer[cnt] = (int) (n % 10);
n /= 10;
cnt++;
}
return answer;
}
}
코드설명
- 3번라인 : long타입의 n값을 String값으로 변환해준다.
- 4번라인 : int형 배열의 크기를 문자열 s의 길이 만큼 선언해준다.
- 5번라인 : 배열의 인덱스값을 표현할 cnt변수에 0을 담아준다.
- 6~10번라인 : while문을 통해 n값이 0보다 크면 계속 반복해 준 후, answer배열의 n%10으로 나누었을때 나머지를 int형으로 형변환 하여 하나씩 넣어준다. 그 후 n값을 10으로 나누어서 n값을 초기화하고, 배열의 인덱스번호가 증가할 수 있도록 cnt값을 1씩 증가시켜 준다. 즉, 정수를 10으로 나누어서 자리수를 구하는 방식이다.
반복문 내에서 값을 찍어보면 이해하기가 조금더 쉬워진다. 해당 반복문을 console창에 찍어보면 아래와 같이 값을 확인해볼 수 있다. 이렇게 순차적으로 값이 들어가고 있는걸 확인할 수 있다.
- 11번라인 : 마지막으로 answer값을 리턴해주면 된다.
다른 사람의 풀이
class Solution {
public int[] solution(long n) {
String s = String.valueOf(n);
StringBuilder sb = new StringBuilder(s);
sb = sb.reverse();
String[] ss = sb.toString().split("");
int[] answer = new int[ss.length];
for (int i=0; i<ss.length; i++) {
answer[i] = Integer.parseInt(ss[i]);
}
return answer;
}
}