[99클럽 코테 스터디] 1일차 TIL - 자연수 뒤집어 배열로 만들기

Hoxy?·2024년 7월 22일
0

99클럽 코테 스터디

목록 보기
1/42
post-thumbnail

오늘의 학습 키워드

  • 자연수 뒤집어 배열로 만들기

공부한 내용 본인의 언어로 정리하기

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이 변환이 되지않고 nint로 형변환이 되었던 것 그래서 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

profile
하나부터 열까지 모든 것이 궁금한 개발자 취준생

0개의 댓글