오늘의 학습 키워드
공부한 내용 본인의 언어로 정리하기
import java.util.*;
class Solution {
public int[] solution(long n) {
ArrayList<Integer> num = new ArrayList<>();
while(n > 0){
num.add((int)(n % 10));
n /= 10;
}
int[] result = new int[num.size()];
for(int i = 0; i < result.length; i++){
result[i] = num.get(i);
}
return result;
}
}
오늘의 회고
국비 학원을 다니며 빠른 속도로 계속 새로운 것을 배우다보니 배열을 어떻게 만드는지부터 기억 안났고 배열에 관한 것중 ArrayList
만 기억에 있어 객체를 만드는 것 부터 검색을 하면서 시작했다.
ArrayList<Integer> num = new ArrayList<>();
자연수를 배열로 만들려면 입력되는 값을 다 쪼개야겠다고 생각해서 n을 10으로 나누면 나머지가 각 자리값이 되겠구나 라고 생각했다.
while(n > 0){
num.add((int) n%10);
n /= 10;
}
그래서 while문
을 사용해서 나머지값을 1의 자리부터 순차적으로 배열에다가 추가하니 자연수의 역순으로 배열이 생성이 되었다.
하지만 오류가 있었다 n%10
이 변환이 되지않고 n
만 int
로 형변환이 되었던 것 그래서 n%10
또한 ( )로 감싸주었다.
while(n > 0){
num.add((int)(n % 10));
n /= 10;
}
이제 여기서 배열이 정렬이 되었으니 출력을 하면 되겠구나 했는데 오류가 났다.
그래서 알아보니 메소드의 선언된 반환 타입은 int[]
였고 반환이 되고 있는 것은 ArrayList<Integer>
이었다.
여기서 ArrayList<Integer>
를 int[]
로 자동으로 변환해 주지 않는다는 것, 이 두 타입은 서로 다른 구조를 가지고 있어 직접적인 변환이 불가능하다는 것을 알게 되었다.
그리하여 ArrayList<Integer>
를 int[]
로 변환하는 과정이 추가 되어야 했다.
int[] result = new int[num.size()];
for (int i = 0; i < num.size(); i++) {
result[i] = num.get(i);
}
내일은 배열의 다른 방법에 대해서 복습하고 추가로 작성해 보아야 겠다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12932