Back-end/Algorithm

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

Nellie Kim 2023. 8. 1. 13:33
728x90

문제 설명

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

제한 조건
  • n은 10,000,000,000이하인 자연수입니다.
입출력 예

 

내 풀이

import java.util.*;

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

        int numOfDigits = (int) Math.log10(n) + 1; //n의 자릿수 구하는 방법
        int[] answer = new int[numOfDigits];

        for (int i = 0; i < numOfDigits; i++) {
            answer[i] = (int) (n % 10);
            n = n / 10;
        }
        return answer;
    }
}

public class codingTest {
    public static void main(String[] args) {
        Solution T = new Solution();

        System.out.println(Arrays.toString(T.solution(12345)));

    }
}

처음에 int[] answer = new int[n] 했다가, 12345개의 배열이 생성됨 ;;ㅜㅜ

자릿수를 따로 구해야 한다. 나는 log 함수를 써서 구했다. 

 

다른사람 풀이 1 

import java.util.stream.IntStream;

class Solution {
    public int[] solution(long n) {
        return new StringBuilder().append(n).reverse().chars().map(Character::getNumericValue).toArray();
    }
}

스트림을 이용한 풀이이다. 

 

 

다른사람 풀이 2

class Solution {
  public int[] solution(long n) {
      String a = "" + n;
        int[] answer = new int[a.length()];
        int cnt=0;

        while(n>0) {
            answer[cnt]=(int)(n%10);
            n/=10;
            System.out.println(n);
            cnt++;
        }
      return answer;
  }
}

이 풀이는 자리수를 구하기 위해 n을 String으로 변환하고, 그 length를 구하는 방법을 사용했다.