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

나의 기록·2026년 5월 29일

코딩테스트

목록 보기
5/35

문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴하는 문제임.

nreturn
12345[5,4,3,2,1]

제한 조건

  • n은 10,000,000,000 이하인 자연수

풀이 과정

접근 방법

숫자를 문자열로 변환한 뒤 toCharArray()로 char 배열을 만들고, index를 뒤에서부터 순회하면서 int 배열에 담는 방식으로 접근함.

StringBuilder.reverse() 같은 라이브러리 쓰지 않고 index를 직접 역순으로 돌리는 방식 선택함.

핵심 포인트

n이 10,000,000,000 → int 범위(약 21억) 초과 → long 타입 필수!

'5' - '0'  =  53 - 48  =  5

char는 내부적으로 ASCII 코드값이라서 '0'(48)을 빼면 실제 숫자가 나옴.


최종 코드

import java.util.*;

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

        String numberParam = String.valueOf(n);
        char[] charArr = numberParam.toCharArray();
        int index = charArr.length - 1;
        int i = 0;
        int[] answer = new int[charArr.length];

        while (index >= 0) {
            answer[i] = charArr[index] - '0'; // char → int 변환
            index--;
            i++;
        }

        return answer;
    }
}

풀이 흐름

12345 (long)
  ↓ String.valueOf()
"12345" (String)
  ↓ toCharArray()
['1','2','3','4','5'] (char[])
  ↓ 역순 순회 (index: 4 → 0)
  ↓ charArr[index] - '0'
[5, 4, 3, 2, 1] (int[])

다른 풀이 방법

StringBuilder.reverse() 활용

import java.util.*;

class Solution {
    public int[] solution(long n) {
        String reversed = new StringBuilder(String.valueOf(n))
                              .reverse()
                              .toString();

        int[] answer = new int[reversed.length()];
        for (int i = 0; i < reversed.length(); i++) {
            answer[i] = reversed.charAt(i) - '0';
        }

        return answer;
    }
}

StringBuilderreverse() 메서드로 문자열을 먼저 뒤집고 순서대로 순회하는 방식임.
index 역순 계산 없이 직관적으로 읽히는 장점 있음.


Stream 활용 (함수형)

import java.util.*;

class Solution {
    public int[] solution(long n) {
        return new StringBuilder(String.valueOf(n))
                    .reverse()
                    .chars()
                    .map(c -> c - '0')
                    .toArray();
    }
}

reverse().chars()로 IntStream 변환, .map()으로 char → int 처리까지 한 줄 체이닝으로 해결함.
코드가 짧고 모던한 스타일이지만 가독성은 호불호 갈릴 수 있음.


세 가지 방법 비교

방법특징스타일
index 역순 순회 (본 풀이)직관적, 본질적, 라이브러리 의존 없음절차형
StringBuilder.reverse()간결, 뒤집기 의도 명확절차형
Stream + chars()코드 짧고 모던함함수형

배운 점

  • 범위 조건 보고 int vs long 타입 먼저 확인하는 습관 들여야 함
  • char - '0' 패턴으로 문자를 숫자로 변환할 수 있음
  • reverse() 안 써도 index 역순 순회로 충분히 해결 가능함
profile
뭐든 남겨본다

0개의 댓글