본문 바로가기
코딩테스트/Java

[Level1] 자연수 뒤집어 배열로 만들기 답안 및 풀이

by SRin23 2021. 7. 13.

◇ 문제 설명

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

 

◇ 제한 조건

  • n은 10,000,000,000이하인 자연수입니다.

 

◇ 입출력 예시

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

 

◇ 초기 내용

※ [출처] 프로그래머스-코딩테스트 연습-문제명

※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.

class Solution {
    public int[] solution(long n) {
        int[] answer = {};
        return answer;
    }
}

 


◇ 답안

class Solution {
    public long[] solution(long n) {
        long cpn = n;
        int cnt = 0;
        
        while(cpn!=0){
            cpn/=10;
            cnt++;
        }
        
        long[] answer = new long[cnt];
        int i = 0;
        
        while(n!=0){
            answer[i] = n%10;
            n/=10;
            i++;
        }
        return answer;
    }
}

 

◇ 답안 힌트

    ▶  n의 제한 조건이 10,000,000,000이하인 정수로, int형의 범위를 넘기 때문에 n을 계산하기 위해서는 answer또한 long형이어야 합니다.

    ▶ n의 값이 2번 바뀌므로, n의 복사본을 준비합니다.

 

◇ 답안 풀이

(※ 실행 흐름 순으로 해석됩니다.)

class Solution {

    //return하는 answer의 type이 long형이므로 solution의 return타입을 long형으로 변환
    public long[] solution(long n) {

        //n의 복사본 cpn
        long cpn = n;

        //n의 자릿수를 계산하는 cnt
        int cnt = 0;
        

       //n을 10씩 떼어내어, n의 자릿수를 구하는 코드
        while(cpn!=0){
            cpn/=10;
            cnt++;
        }
        

        //n의 자릿수만큼 long형 배열 생성
        long[] answer = new long[cnt];
        

        //n에서 한자리씩 떼어 answer에 저장

        int i = 0;
        while(n!=0){
            answer[i] = n%10;
            n/=10;
            i++;
        }
        return answer;
    }
}

 

◇ 실행결과

자연수 뒤집어 배열로 만들기 실행결과

 

◇ 출처

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

댓글