함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
n
은 1이상 8000000000 이하인 자연수입니다.n | return |
---|---|
118372 | 873211 |
1) 버블정렬 (BubbleSort)
버블정렬이란?
😎 장점
구현이 매우 간단하고, 소스코드가 직관적이다.
정렬하고자 하는 배열 안에서 교환하는 방식이므로,
다른 메모리 공간을 필요로 하지 않다. => 제자리 정렬(in-place sorting)
안정 정렬(Stable Sort) 이다.
👿 단점
시간복잡도가 최악, 최선, 평균 모두 O(n^2)
으로, 굉장히 비효율적
이다.
정렬 돼있지 않은 원소가 정렬 됐을때의 자리로 가기 위해서,
교환 연산(swap)이 많이 일어나게 된다.
2) 자체 함수를 쓰지않고 정렬 알고리즘
으로 풀기로 결정!
3) 풀이보다 더 코드를 간단하게 쓸 수도 있었던것 같아서
레퍼런스
를 더 면밀히 살펴봐야겠다는 생각이 들었음.
class Solution {
fun solution(n: Long): Long {
val str = n.toString()
val split = str.split("").filter{it != "" }
var numArr = ArrayList<Int>();
split.map { numArr.add(it.toInt()) }
for(i in numArr.size-1 downTo 1){
for(j in 0 until i){
if(numArr[j]<numArr[j+1]){
val temp = numArr[j+1]
numArr[j+1] = numArr[j]
numArr[j] = temp
}
}
}
return numArr.map { it.toString() }.joinToString("").toLong()
}
}
class Solution {
fun solution(n: Long): Long = String(n.toString().toCharArray().sortedArrayDescending()).toLong()
}
class Solution {
fun solution(n: Long): Long {
return n.toString().map {
it.toString().toInt()
}.sortedDescending().joinToString(separator = "").toLong()
}
}