[프로그래머스/java] 자연수 뒤집어 배열로 만들기

리트리버J

·

2020. 12. 27. 14:33

728x90

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요.

예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

 

나의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
  public int[] solution(long n) {
        // long → String      
        String s = String.valueOf(n);
        
        // reverse()메소드를 이용하기 위하여 
        // StringBuilder 인스턴스 생성
        StringBuilder sb = new StringBuilder(s);
        
        // reverse()로 문자열 뒤집기
        sb = sb.reverse();
        
        // String.split("")로 한 글자씩 잘라 배열에 담기
        String[] stringArr = sb.toString().split("");
        
        // 문자열 길이 만큼 배열 길이 할당
        int[] answer = new int[sb.length()];
        
        // String → int → int[]
        for (int i=0; i < sb.length(); i++) {
            answer[i] = Integer.parseInt(stringArr[i]);
        }
      
        return answer;
  }
}
cs

 

사이트 풀이

포인트  

1) 문자열 + 숫자 = 문자열을 이용하여 쉽게 long → String으로 할당하는 것.

2) % 연산자를 이용하여 나머지 값을 이용하는 것

3) /= 연산자를 이용하여 반복 한 것 

4) 0.1이 0으로 표시되는것을 활용하여 while반복문을 사용한 것

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
  public int[] solution(long n) {
 
        // 문자열 + 숫자 = 문자열
        String a = "" + n;
        
        int[] answer = new int[a.length()];
        
        int cnt = 0;
        
        while (n > 0) {
 
            // 1) 12345 % 10 = 5
            // 2) 1234 % 10 = 4
            // 3) 123 % 10 = 3
            // 4) 12 % 10 = 2
            // 5) 1 % 10 = 1
            answer[cnt] = (int) (n % 10);
 
            // 12345 = 1234
            // 1234 = 123
            // 123 = 12
            // 12 = 1
            // 1 = 0 ( 0.1 )
            n /= 10;
 
            cnt++;
        }      
        return answer;
  }
}
cs

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

728x90