๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Kotlin/Programmers Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฝ”ํ‹€๋ฆฐ] ์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ #12933

by eun.24k 2023. 10. 22.

#12933

๐ŸŽ„ Question ?

https://school.programmers.co.kr/learn/courses/30/lessons/12933

class Solution {
    fun solution(n: Long): Long {
        var answer: Long = 0
        return answer
    }
}

๐Ÿงฉ Thought Process

  1. 10์”ฉ ๋‚˜๋ˆ„๋ฉด์„œ ๋ชจ๋“  ์ž๋ฆฟ์ˆ˜๋ฅผ array์— ๋„ฃ๊ธฐ
  2. array ์•ˆ์— ์žˆ๋Š” ๊ฐ’์„ sortDescending() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ
  3. ๋‹ค์‹œ ์ˆซ์ž ๋ชจ์œผ๊ธฐ
import kotlin.math.pow
class Solution {
    fun solution(n: Long): Long {
        var answer: Long = 0
        var m = 1
        var nList =  mutableListOf<Int>()
        var nString = n.toString()
        var nCharArray = nString.toCharArray()
        var arraySize = nCharArray.size
        for (i in 0 until arraySize) {
            nList.add(nCharArray[arraySize-1-i].digitToInt())
        }
        nList.sortDescending()
        for(j in 0 until arraySize) {
            m *= 10
            answer += (nList.get(arraySize-j-1))*m
        }
        return answer/10
    }
}

์ฒซ ์‹œ๋„ ์‹คํŒจ์“ฐ.. 

๋‘๋ฒˆ์งธ ์‹œ๋„:

class Solution {
    fun solution(n: Long): Long {
        var answer: Long = 0
        var m = 1
        var nString = n.toString()
        var nCharArray = nString.toCharArray()
        var arraySize = nCharArray.size
        var nLongArray = IntArray(arraySize)
        
        for (i in 0 until arraySize) {
            nLongArray[i] = nCharArray[i].digitToInt()
        }
        
        nLongArray.sortDescending()
        
        for (j in 0 until arraySize) {
            m *= 10
            answer += nLongArray[arraySize-j-1]*m
        }
        return answer/10
    }
}

๋„ ์‹คํŒจ์“ฐ..

 

์ƒ๊ฐํ•ด๋ณด๋‹ˆ 0์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค. ํ์Œ.. ์•„๋ฌด๋ž˜๋„ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์˜ค๋Š˜๋„ ์ฐพ์•„๋ณด๊น…..

๐ŸŽ€ Answer

ํ’€์ด #1

์•„๋‹ˆ ์™œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด๋Š” ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ณ  ์งง์€์ง€... ๋ฐ˜์„ฑํ•˜์ž..

class Solution {
    fun solution(n: Long): Long = n.toString().toMutableList().sortedDescending().joinToString("","","").toLong()
}

๊ฐ ํ•จ์ˆ˜๊ฐ€ ์–ด๋– ํ•œ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ณด์•˜๋‹ค.

์ถœ๋ ฅ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

toMutableList()๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋”ฐ๋กœ ์ธ์‹ํ•˜๊ณ  ๋”ฐ๋กœ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ด์ฃผ๋‚˜ ๋ณด๋‹ค ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ ‡๊ฒŒ ์ž…๋ ฅ๋œ ๊ฐ’์„ ์ €์ ˆ๋กœ ์ •์ˆ˜ํ˜•์œผ๋กœ ์ธ์‹ํ•˜๋‚˜๋ณด๋‹ค..

๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•œ๊ฑด์ค„ ๋ชฐ๋ž์ง€์ด..

ํ’€์ด #2

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

String() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์žํ˜•์œผ๋กœ ๋ฐ”๊พผํ›„ ๊ทธ ๋ฌธ์žํ˜•์—๋Š” n ์ˆซ์ž๋ฅผ ๋„ฃ๊ณ  ๊ทธ๊ฑธ CharArray๋กœ ๋ฐ”๊พธ๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐ”๊พธ๊ณ  ๋งˆ์ง€๋ง‰์— ์•Œ๋งž์€ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์—ˆ๋‹ค.

 

๐ŸŽ Result

 

 

๐Ÿ† Comment

์—ฌ๊ธฐ์—์„œ ํ™•์‹คํ•˜๊ฒŒ ๋ฐฐ์šด๊ฑด ๋ฌธ์žํ˜•์„ array๋กœ ๋ฐ”๊พธ์—ˆ์„ ๋•Œ ๊ฐ ๋ฌธ์ž๋ฅผ ํ•œ element๋กœ ๋„ฃ๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์žํ˜•์œผ๋กœ ๋˜์–ด์ง„ array๋‚˜ chararray์— ์ˆซ์ž๋งŒ ์žˆ์œผ๋ฉด sortedArrayDescending์ด๋‚˜ sortedDescending์„ ์ž๋ฃŒํ˜•์„ ๋ฐ”๊พธ์–ด์ฃผ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋‚˜๋Š” ์ž๋ฃŒํ˜•์ด ์ธํŠธ๋‚˜ ๋”๋ธ”์ด์–ด์•ผ์ง€๋งŒ ๋””์„ผ๋”ฉ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ ๋˜๋Š”์ค„ ์•Œ๊ณ  ์ด๋ฆฌ์ €๋ฆฌ ๋ฐ”๊พธ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.