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 의 범위 밖에 나갈 수가 없다.
그래서 수식 순서를 맞춰줌으로서 원하는 값을 배열의 요소로 넣을 수 있었다.
'컴퓨터 프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘] Baekjoon Bronze 5 (0) | 2025.01.10 |
---|---|
[알고리즘] 배열 (0) | 2024.10.07 |
[알고리즘] 문자열에 쓰이는 메서드들 (0) | 2024.09.30 |
[알고리즘][Java] 정수 제곱근 판별, 오버플로우 (0) | 2024.08.12 |
[알고리즘] [Java] String → Int 변환, Integer.parsInt(), char - '0' (0) | 2024.08.08 |