[ 답안 ]
문제가 첫날에 풀었던 자릿수 더하기와 비슷하다고 생각했다.
그때는 숫자를 바로 나누는 방법을 먼저 사용했지만 이번에는 글자로 바꾸어서 쪼개는 방법을 먼저 사용하였다.
class Solution {
public int[] solution(long n) {
//파라미터로 받은 n값을 string타입으로 변환
String num = Long.toString(n);
// 배열을 만들어 위에서 스트링타입으로 받아온 파라미터값의 길이로 배열생성
int[] answer = new int[num.length()];
for(int i = 0 ; i < num.length();i++) {
// 순서대로 넣어줄 배열생성
String[] result = new String[num.length()];
// 반복문을 통해 스트링타입으로 받아온 파라미터값을 한글자씩 쪼개서 위 배열에 넣어준다
result = num.split("");
// 반환될 배열에 역순으로 넣어준다
answer[(num.length()-1)-i] = Integer.parseInt(result[i]);
}
return answer;
}
}
[ 답안 ]
위 방법으로 풀고난 후 쪼개지않고 나눠서도 풀수있나 고민하며 문제를 풀어보았다.
class Solution {
public int[] solution(long n) {
//파라미터로 받은 n값을 string타입으로 변환
String num = Long.toString(n);
// 배열을 만들어 위에서 스트링타입으로 받아온 파라미터값의 길이로 배열생성
int[] answer = new int[num.length()];
// 배열에 인덱스값으로 쓸 객체생성
int cnt = 0;
// 반복문을 통해
while(n > 0) {
// cnt 기본값이 0이므로 제일 처음에 10으로 나눈 값의 나머지를 answer[0]에 담아준다
answer[cnt] = (int)( n%10);
// n을 10으로 나눈값의 몫만을 가지며 나머지를 버린다.
n = n/10;
// cnt값을 증가시켜 다음 반복 때 인덱스값을 증가하여 값을 넣어준다.
cnt++;
}
return answer;
}
}
while대신 for문을 이용하면 객체를 더 생성하지 않아도 된다.
하지만 아직은 while문이 익숙하지 않아 되도록 while문을 사용하려고 한다.
[ 답안 ] - for문 이용
class Solution {
public int[] solution(long n) {
String num = Long.toString(n);
int[] answer = new int[num.length()];
for(int i = 0 ; i < num.length(); i++) {
answer[i] = (int)( n%10);
n = n/10;
}
return answer;
}
}