Code in

프로그래머스 정렬 가장 큰 수 with Kotlin 본문

알고리즘 스터디_문제풀이

프로그래머스 정렬 가장 큰 수 with Kotlin

heyhmin 2020. 8. 10. 21:05

프로그래머스의 코딩테스트 연습 정렬 부분 가장 큰 수 문제이다.

IntelliJ에서의 문제 풀이이다.

var numbers: IntArray = intArrayOf(3, 30, 34, 5, 9)
fun solution(numbers: IntArray): String {
    var answer = ""
    var tmparr = arrayOf<String>()
    numbers.forEach{
        tmparr += it.toString() // numbers를 String 배열로 바꾼다.
    }

    tmparr.sortWith(Comparator<String>{a, b ->
        when{
            a.length == b.length -> b.compareTo(a)
            else -> (b+a).compareTo(a+b)
        }
    })
    // sortWith는 Comparator를 유저가 지정할 수 있도록 한다.
    // 임시로 사용할 것이기 때문에 Comparator<String>를 name 없이 만든다.
    // a, b -> 는 a, b라는 파라미터로 받는 것이다.
    // when은 Kotlin의 다중 if? switch? 비슷한 거라서 if로 바꿔도 된다.
    // A.compareTo(B)는 같으면 0, A가 B보다 작으면 -1, A가 B보다 크면 +1을 return한다.

    if(tmparr[0] == "0") {
        answer = "0"
        return answer
    } // 결과 값이 "00000"인 경우를 미리 제외한다.

    for (i in 0..numbers.size-1)
        answer += (tmparr[i])
    // answer이 String이라서 +로 concatenation이 가능하다.

    return answer
}
fun main() {
    print(solution(numbers)) //9534330
}

URL: https://programmers.co.kr/learn/courses/30/lessons/42746#

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 ��

programmers.co.kr

 

Comments