본문 바로가기
algorithm/Programmers

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

by 이쟝 2022. 9. 28.

자연수 뒤집어 배열로 만들기

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

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

class Solution {
    public int[] solution(long n) {

        String str = String.valueOf(n); // 크기를 구하기 위해서 String으로 변환
        int answer[] = new int[str.length()]; // 배열의 크기를 str로
        int num = 0;

        while(n>0){
            answer[num] = (int)(n%10); // 일의 자리 숫자를 순서대로 배열에 넣기
            n = n/10;
            num ++;
        }
        return answer;
    }
}

받은 매개변수 n을 함수안에 굳이 정의하지 않아도 사용할 수 있다. 

[느낀점]

  • 문자열을 나눌 때는 %, / 로 가뿐히 나누는게 심적으로 좋은 것 같다..
  • StringBuilder sb.reverse( )로 사용할 수도 있다. 물론 Arrays.reverse( )도 있다..
  • 크기를 구하기 위해서 String.valueOf(n)으로 바꿔줬지만 그냥 +" " 이렇게 문자열로 바꿔줘도 괜찮을 것 같다. 
  • 형변환... 안하면 오류난다.. answer이 int[ ]이고 n이 long이니까 n%10에 int로 꼭 형변환 해주기..꼭 꼭...
  • 원래 배열을 [5, 4, 3, 2, 1] 이렇게 출력할 때 반복문 사용(1)하거나 Arrays.toString( )(2) 사용하기,, 까먹었다,, 다시 복기시키기..! 
  • while 문일 때도 arr안에 배열을 하나씩 넣을 수 있다. for(int i=0) 이렇게만 되니까 arr[i] 이렇게 배열에 arr[0].arr[1] 이렇게 집어넣을 수 있었는데, 생각해보니까 임의 변수를 안에 집어넣어서 ++ 하면 while도 쓸 수 있는 것..! 물론 for문 쓸 수도 있는데 다양하게 생각해보기..!