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

Anna·2024년 6월 20일

코딩테스트

목록 보기
13/28
post-thumbnail

📖 문제

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

문제해석

n을 내림차순으로 배치

📖 제한 조건

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


👻 내 풀이

👻 1차 풀이

 class Solution 
 {
     fun solution(n: Long): Long = n.sortDescending()  
}

sortDescending() -> 리스트와 같은 컬렉션 타입에 사용됨

👻 2차 풀이

class Solution 
{
    fun solution(n: Long): Long
    {
        val listn = n.toString().toList().sortDescending()
        return listn.toLong()
    }
}

문자열에 대해서 조금 더 공부해야 할거같다.

👻 다른 사람 풀이 해석 (1)

class Solution 
{
    fun solution(n: Long): Long = 
    String(n.toString().toCharArray().sortedArrayDescending()).toLong()
}

n.toString()문자열로 변환 -> "118372"
.toCharArray()문자열을 문자 배열로 변환 -> ['1', '1', '8', '3', '7', '2']
.sortedArrayDescending() 문자 배열을 내림차순으로 정렬
String(...) 정렬된 문자 배열을 다시 문자열로 변환 -> "873211"

👻 다른 사람 풀이 해석 (2)

class Solution 
{
    fun solution(n: Long): Long 
    {
        return n.toString()         // 숫자를 문자열로 변환  -> "118372"
            .toList()               // 문자열을 문자 리스트로 변환  -> 
                                    //['1', '1', '8', '3', '7', '2']
            .sortedDescending()     // 내림차순으로 정렬
            .joinToString("")       // 정렬된 리스트를 문자열로 결합 -> "873211"
            .toLong()               // 문자열을 Long 타입으로 변환
    }
}

컬렉션에서 .joinToString 하면 하나로 모임

list를 toString하면 괄호와 콤마가 그래도 들어감

👻 디버그로 체크

package org.example

class Solution{
    fun solution(n: Long): Long
    {
        val nString = n.toString()
        val nList = nString.toList() //문자열은 문자 하나하나의 집합
        val sortedlist = nList.sortedDescending() //문자열이 리스트로 들어가면 문자로 찢어짐
        val joinedlist = sortedlist.joinToString ("") //리스트를 하나로 모임
        //val toStringlist = sortedlist.toString() 
        //리스트 toString했기 때문에 괄호랑 콤마가 그래도 들어감 -> “[9, 7, 6, 4, 3, 2]”
        val result = joinedlist2.toLong()

        return n.toString()
            .toList()
            .sortedDescending<Char>()
            .joinToString<Char>(separator = "")
            .toLong()
    }
}
fun main()
{
    val solu = Solution()
    println(solu.solution(647392))
}

0개의 댓글