실력 향상 일지/프로그래머스

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

juniordev 2022. 10. 10. 20:01

문제 설명 및 입출력 예시

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

제한조건 - n은 10,000,000,000 이하인 자연수입니다.

 

입출력 예

n return
12345 [5, 4, 3, 2, 1]

 


코드 & 풀이과정

처음 문제를 봤을때 굉장히 당황했지만 곰곰히 생각해본 결과 그냥 여태 했던것처럼 10의 나머지를 구하고 짜르고 10의 나머지를 구하고 짜르고를 반복하면 역순으로 배치가 된다는걸 깨달았고 코드를

class Solution {
    public int[] solution(long n) {
        int s = (int) Math.log10(n) + 1;
        int[] answer = new int[s];
        for (int i = 0; i < s; i++) {
            answer[i] = (int) (n % 10);
            n /= 10;
        }
        return answer;
    }
}

이런식으로 전개했다. 저기서 Math.log10은 (int)로 형변환을 해서 소수점을 제거해준 후 +1을 해주면 자리수를 빠르게 구할 수 있다. 따라서 나머지는 그냥 포문에 넣고 돌리면서 0 부터 s까지 배열에 값을 집어넣으면 해결되는 코드다.


 

회고

첫번째로 나는 java배열을 선언하고 초기화를 해주는법을 가물가물해 했었다. 다시한번 기초가 부족함을 실감했다.

두번째로 여전히 다른 사람의 풀이에는 센세이션한 풀이법이 참 많은거같아서 현타라고나 할까 막 의기소침해지는게 느껴진다. 하지만 계속 하다보면 언젠가는 괜찮아질거라고 생각한다. 괜찮아지겠지...


💻프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12932