컴퓨터 프로그래밍/알고리즘

[알고리즘] [Java] 정수를 문자열로 바꾸기, 타입 변환하기

한33 2024. 8. 7. 00:56

class Solution {
    public int[] solution(long n) {
        String i = Long.toString(n);
        int[] answer = new int[i.length()];

        for (int j = 0; j < i.length() ; j++) {
            answer[j] = (int) (n%10);
            n = n/10;
        }

        return answer;
    }
}

 

이번 알고리즘 문제를 풀면서 알게된 부분을 정리해보려고 한다.

 

1) 배열을 선언하기 위해서는 배열 크기를 먼저 지정을 해야했다. 하지만 입력되는 값에 따라 크기가 바뀌기 때문에 이를 어떻게 하면 될지 문제가 생겼다.

 

String i = Long.toString(n);

 

입력받은 long 타입의 n 정수를 Long.toString 안에 넣어서 String i 변수 안에 넣어줌으로서

 

"정수" 를 "문자열" 로 바꿀 수 있었다.

 

int[] answer = new int[i.length()];

 

문자열의 길이를 이용해서 정수의 자리수를 확인할 수 있었고, 이를 이용해서 int 배열인 answer 를 크기와 함께 선언할 수 있었다.

 

2) long 타입 안에 들어온 n 값이 int 배열로 들어가지면서 문제가 생겼다.

 

answer[j] = (int) n%10;

 

기존에 n%10 을 괄호로 묶지 않았었다. 

 

그러다보니 n 을 int 로 바꿔지는 과정에서 문제가 발생했던 것이다.

 

n 이 int 범위를 넘어섰는데 강제로 타입변환을 하다보니 그 값이 바뀌면서 거기에 10을 나눈 값이 배열 요소에 저장이 되었던 것이다.

answer[j] = (int) (n%10);

 

우리는 long 범위 안에 들어온 n 을 10으로 나눈 나머지 값을 배열로 집어넣는 과정을 가져야하기 때문에

n%10 은 int 의 범위 밖에 나갈 수가 없다.

 

그래서 수식 순서를 맞춰줌으로서 원하는 값을 배열의 요소로 넣을 수 있었다.