Kotlin 리스트 정렬 with 프로그래머스 정수 내림차순으로 배치하기

박미소·2024년 1월 3일
0

코틀린

목록 보기
19/44

내가 쓴 코드


class Solution {
    fun solution(n: Long): Long {
        var answer: Long = 0
        var array: List<Int> = listOf()
        array = n.toString().map { it.toString().toInt() }.sorted().reversed()
        var emptyStr = ""
        for (i in array) emptyStr += i
        answer = emptyStr.toLong()
        return answer
    }
}

빈 리스트를 선언하고,

이 리스트에 map() 함수로 정수 n을 String으로 만들어 하나하나 쪼개서(it) 배열로 만들어 리스트에 담는다.

리스트에 담는 과정에서 toString()을 먼저 하고 toInt()로 변환해야한다.

toString을 쓰지 않으면 "8","7","3","2",.. 가 정수로 변환되며 아스키코드가 담겨 틀린 숫자가 담기게 된다.

그리고 이 정수열을 정렬하고 내림차순한다.

빈 문자열을 선언하고 for문으로 리스트를 돌려 빈문자열에 담고 .toLong()으로 원래의 자료형으로 변환해준다.





List 와 mutableList의 다른 정렬법


Immutable 리스트는 sorted()를 사용한다. 데이터 변경이 안되는 리스트는 sorted()를 이용해 리스트 원본을 변경하지 않고 정렬된 리스트를 생성하여 리턴한다. 뒤집는 reversed() 또한 역순으로 변경된 새로운 리스트를 생성한다.

fun main(args: Array<String>){

    val list = listOf(10, 100, 50, 2, 77, 4)

    val sorted = list.sorted()
    println("sorted: $sorted")   // sorted: [2, 4, 10, 50, 77, 100]
}

Mutable 리스트는 sort()를 사용한다. 데이터 변경이 가능한 뮤터블 리스트이기에 sort()를 이용해 자신이 갖고 있는 요소의 순서를 변경한다. reverse() 또한 리스트 자신의 요소들의 순서를 반대로 변경한다.

fun main(args: Array<String>){

    val list = mutableListOf(10, 100, 50, 2, 77, 4)

    list.sort()
    println("sorted: $list")   // sorted: [2, 4, 10, 50, 77, 100]
}




map 컬렉션





Map.toList().map() -- Map과 map()은 다른 것





joinToString()





다른 사람 풀이


class Solution {
	fun solution(n: Long): Long {
        var answer: Long = 0
        var num = n.toString()
        var arr = num.toCharArray().sortedArrayDescending()
        
        answer = String(arr).toLong()

        return answer
    }
}
class Solution {
    fun solution(n: Long): Long = String(n.toString().toCharArray().sortedArrayDescending()).toLong()
  • sortedArrayDescending()
    fun <T : Comparable<T>> Array<T>.sortedArrayDescending(): Array<T>
    : 내림차순으로 정렬된 새로운 배열 반환
    : 원본 배열은 그대로 둠

  • sortedArray()
    fun <T : Comparable<T>> Array<T>.sortedArray(): Array<T>
    : 오름차순으로 정렬된 새로운 배열 반환
    : 원본 배열은 그대로 둠

  • sort()
    fun <T : Comparable<T>> Array<out T>.sort()
    : 원본 배열을 오름차순으로 정렬

  • sortDescending()
    fun <T : Comparable<T>> Array<out T>.sortDescending()
    : 원본 배열을 내림차순으로 정렬







참고:
https://develop-oj.tistory.com/3

https://codechacha.com/ko/kotlin-sorting-list/

https://yenne.tistory.com/73

https://0391kjy.tistory.com/38

https://zerogdev.blogspot.com/2019/07/kotlin-filter-map-all-any-count-find.html

https://codechacha.com/ko/kotlin-convert-map-to-list/

https://themach.tistory.com/188

https://velog.io/@hxeyexn/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.-1-%EC%A0%95%EC%88%98-%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%B9%98%ED%95%98%EA%B8%B0Kotlin

0개의 댓글