본문 바로가기
알고리즘/코딩 - 프로그래머스

[Java][프로그래머스][Level 1] 자연수 뒤집어 배열로 만들기

by 주남2 2019. 4. 9.
반응형

문제 설명

자연수 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
import java.util.*;
 
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 = new int[arr.size()];
          
          for(int i=0; i<arr.size(); i++) {
              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으로 합치는 방식을 사용해야 하는데, 나중에 기회가 온다면 다루어보기로 하자.

반응형