반응형
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
생각
전에 풀었던 자릿수 더하기와 비슷한 문제이다. 먼저 n을 10으로 나눈 나머지를 구해 첫 배열값에 넣어주고 n = n/10을 하여 자릿수를 하나 줄여준다. 위 과정을 n이 0이 될 때까지 반복하면 끝날 것이다. 하지만 여기서 한 가지 더 생각해줘야 하는 것이 있다. 그것은 제한 조건!! n의 범위가 10,000,000,000 (백 억) 이다. 백 억은 int형의 범위를 가뿐하게 넘을 것이다. 이 기회에 byte, short, int, long의 범위를 살펴보자!
byte | -128 ~ 127 |
short | -32768 ~ 32767 |
int | -2147483648 ~ 2147483647 |
long | -9223372036854775808 ~ 9223372036854775807 |
따라서 제한 조건이 백 억까지인 경우에는 데이터 타입을 long으로 써줘야 한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class Solution {
public int[] solution(long n) {
int[] answer = {};
ArrayList<Integer> arr = new ArrayList<Integer>();
long a = 0;
while(n!=0) {
a = n%10;
arr.add((int)a);
n = n/10;
}
answer[i]= arr.get(i);
}
return answer;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
ArrayList에는 각 자리 수만 들어가므로 Integer로 한다. 나중에 더 큰수를 다루게 되면 Big Integer라는 것을 따로 만들거나 배열에 넣어 나중에 String으로 합치는 방식을 사용해야 하는데, 나중에 기회가 온다면 다루어보기로 하자.
반응형
'알고리즘 > 코딩 - 프로그래머스' 카테고리의 다른 글
[Java][프로그래머스][Level 1] 제일 작은 수 제거하기 (0) | 2019.04.12 |
---|---|
[Java][프로그래머스][Level 1] 정수 내림차순으로 배치하기 (0) | 2019.04.11 |
[Java][프로그래머스][Level 1] 자릿수 더하기 (0) | 2019.04.07 |
[Java][프로그래머스][Level 1] 이상한 문자 만들기 (0) | 2019.04.06 |
[Java][프로그래머스][Level 1] 약수의 합 (0) | 2019.04.05 |