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

👀 문제

https://programmers.co.kr/learn/courses/30/lessons/12932

👊 도전

1. 설계

  1. 10으로 나눈 나머지를 차례대로 배열에 넣는다.

2. 구현 (성공 코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 *
 * @author HEESOO
 *
 */

 class Solution {
   public int[] solution(long n) {
       int[] answer = {};
       String size=""+n;
       answer=new int[size.length()];
       int i=0;
       while(n>0){
           answer[i]=(int)(n%10);
           n=n/10;
           i++;
       }
       return answer;
   }
 }
 

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. n의 길이를 알기위해 String형으로 변환한다.
    • string형과 int, long 등의 숫자형이 연결되면 string이 된다.
    • 따라서 앞에 아무것도 없는 “” String을 붙여 형변환한다.
  2. n을 일의자리부터 넣으면 되므로 10으로 나눈 나머지를 차례대로 배열에 넣는다.
    • 나머지는 배열에, 몫은 n이 되어 계속 진행한다.
    • while문에서 answer[i]에 값을 넣을 때 형변환이 필요하다. 이때 n%10에 괄호를 치지 않으면 int형변환이 n에서만 이루어지므로 값 손실이 일어날 수 있다. 따라서 괄호가 필요하다.

👏 해결 완료!

문제를 제대로 읽지 않고 내림차순 정렬해라는 의미인 줄 알았다. 그래서 long을 String으로 변환 후 배열에 저장하여 내림차순 정렬했다가 틀렸음을 알았다. 앞으로는 문제를 똑바로 읽는 습관을 들이고, 위 코드와 같이 수학적으로 푸는 연습을 해야겠다. 저 코드를 보기 전에는 막연히 형변환으로 숫자를 뒤집어야겠다고 생각했기 때문이다.