코딩테스트/프로그래머스

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

민톨이 2024. 10. 22. 01:00
728x90

📋 문제

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

 

📋 입출력 예시

 

 

📋 풀이

 

import java.util.*;

class Solution {
    public int[] solution(long n) {
       // long n을 문자열로 변환
        String str = String.valueOf(n);
        // 문자열을 뒤집기 위해 StringBuilder 사용
        StringBuilder sb = new StringBuilder(str);
        sb.reverse();

        // 결과를 저장할 int 배열 생성
        int[] answer = new int[sb.length()];
        for (int i = 0; i < sb.length(); i++) {
            // 각 문자를 숫자로 변환하여 배열에 저장
            answer[i] = sb.charAt(i) - '0';
        }

        // 배열 반환
        return answer;
}
}

 

- valueOf()로 형변환

- StringBuilder 사용해서 reverse()로 뒤집어줌 

- sb에 담겨있는 것들을 answer정수 배열에 담아준다 

 

+ long 타입의 값을 int 배열에 담는 것은 가능.

다만 long은 64비트(8바이트) 크기를 가지는 반면, int는 32비트(4바이트) 크기를 가집니다. 따라서 long을 개별 자리수로 분리하여 int 배열에 담는 경우, 각 자릿수는 0에서 9까지의 값이므로, 자릿수 하나는 int로 충분히 표현 가능. 즉, long 값의 자릿수를 int로 변환해 담는 것은 안전하고 문제 X.