본문 바로가기
Computer Science/알고리즘

프로그래머스 알고리즘 문제[자연수 뒤집어 배열로 만들기]

by juwon2 2024. 3. 8.

# 문제

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

 

# 제한조건 

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

 

 

# 입출력 예

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

 

 

 

# 풀이 

class Solution {
    fun solution(n: Long): IntArray {
        
        var num : Long = n
        var answer = ArrayList<Int>()
    
        
        while (num > 0 ) {
            answer.add((num%10).toInt())
            num = num/10
        }
        
        return answer.toIntArray()
    }
}

 

일단 answer 이라는 빈 리스트를 만들어놓고,

num이 0보다 크면 해당 코드를 실행한다

 

num이 123 이라고 가정해보자

0보다 크니깐 123%10 = 3 을 answer리스트에 추가해준다

그리고 123/10= 12를 num에 넣어준다

num=12니깐 12를 다시 12%10해서 나온 2를 answer리스트에 추가해주고

12/10= 1을 num에 넣어준다

num=1 이니깐 , 1%10=1 을해서 나온 1을  answer리스트에 추가해주고

1/10=0 이므로 num이 0이되기때문에 반복문을 빠져나온다

 

따라서 answer에는 [3,2,1]이 들어가게 된다

 

 

 

 

# 다른사람 풀이

class Solution {
    fun solution(n: Long): IntArray {
        return n.toString().reversed().map { it.toString().toInt() }.toIntArray()
    }
}

 

class Solution {
    fun solution(n: Long): IntArray {
        return n.toString()
            .reversed()
            .split("")
            .filter { it != "" }
            .map { it.toInt() }
            .toIntArray()
    }
}