본문 바로가기

프로그래머스 코딩(자바)/Level 1

Programmers Level 1 - 자연수 뒤집어 배열로 만들기

728x90

문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한 조건
  • n은 10,000,000,000이하인 자연수입니다.
입출력 예
n result
12345 [5,4,3,2,1]

 

1
2
3
4
5
6
7
8
9
10
class Solution {
    public int[] solution(long n) {
        int[] answer = new int[(n+"").length()];
        char[] chars = new StringBuffer(n+"").reverse().toString().toCharArray();
        for(int i=0;i<chars.length;i++) {
            answer[i] = chars[i]-'0';
        }
        return answer;
    }
}
cs

 

  자연수 n을 문자열로 만들어 길이를 구하여 리턴되는 배열의 크기를 구하고

  자연수 n을 문자열로 만들어 다시 StringBuffer객체로 만들고 

  reverse() 메서드로 문자열을 뒤집고 toString() 메서드로 String으로 만들고

  toCharArray() 메서드를 호출하여 char배열을 만들어서 

  배열을 반복하며 -'0'을 하여 숫자로 만들어 배열에 저장하였다.

 

1
2
3
4
5
6
7
8
9
10
class Solution {
    public int[] solution(long n) {
        int[] answer = new int[(n+"").length()];
        for(int i=0;n>0;i++) {
            answer[i] = (int)(n % 10);
            n /= 10;
        }
        return answer;
    }
}
cs

 

  자연수 n을 문자열로 만들어 길이를 구하여 리턴되는 배열의 크기를 구하고

  %10하여 뒷자리 1자리씩 잘라서 배열에 차례대로 넣는다.

  반복할때마다 /10을 하여 배열에 넣은 마지막 자리를 잘라서 버린다.

 

1
2
3
4
5
6
7
class Solution {
    public int[] solution(long n) {
        return new StringBuilder(n+"").reverse()
                                      .chars().map(v->v-'0')
                                      .toArray();
    }
}
cs

 

  new StringBuilder(n+"").reverse() 이용하여 뒤집은 문자열을 만들고

  chars()를 이용하여 IntStream으로 만들고

  위에서 만들어진 IntStream은 문자의 ASCII코드 값들이므로  -'0'을 하여 숫자로 변환한다,

  마지막으로 toArray()를 이용하여 int배열을 리턴한다.

 

728x90