정수 내림차순으로 배치하기

KSang·2023년 11월 29일
0

[Kotlin]코드카타

목록 보기
19/100

문제설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한사항

n은 1이상 8000000000 이하인 자연수입니다.

진행

배열로 받은뒤 sortDescending을 이용해 내림차순으로 정렬하자

var arr = mutableListOf<Long>()

일단 크기가 불분명하니 가변리스트로 만들어준뒤

while (x > 0){
        arr.add(x%10)
        x /= 10
    }

더이상 못나눌때까지 나눠주며 나머지를 리스트에 추가하기를 반복한다

arr.sortDescending()

리스트가 차면 내림차순으로 정렬해주자

var i = 0
    while (i < arr.size){
        answer += arr[i]
        answer *= 10
        i++
    }
    answer = answer /10

이제 순서대로 더해주고 10씩 곱해준다음 마지막에 10을 나누면 끝

코드

package com.example.codekata

import kotlin.math.sqrt

fun main() {

    while (true) {
        println("숫자 입력:")
        var n = readln().toLong()
        if (n < 1){
            println("1이상이어야 합니다")
        }else if (n > 8000000000){
            println("숫자가 너무큽니다")
        }
        println("${solution(n)}")
    }
}
fun solution(n: Long): Long {
    var answer: Long = 0
    var arr = mutableListOf<Long>()
    var x = n
    while (x > 0){
        arr.add(x%10)
        x /= 10
    }
    arr.sortDescending()
    var i = 0
    while (i < arr.size){
        answer += arr[i]
        answer *= 10
        i++
    }
    answer = answer /10
    return answer
}

결과

0개의 댓글