Code in

프로그래머스 탐욕법(Greedy) 큰 수 만들기 with Kotlin, 테스트 케이스 추가 본문

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

프로그래머스 탐욕법(Greedy) 큰 수 만들기 with Kotlin, 테스트 케이스 추가

heyhmin 2020. 8. 16. 03:33

프로그래머스 탐욕법(Greedy) 큰 수 만들기 문제입니다.

IntelliJ에서의 풀이입니다. 

var k: Int = 4
val number: String = "4177252841"

fun solution(number: String, k: Int): String {
    val str: StringBuilder = StringBuilder(number)
    // String에 비해서 시간이 대략 1/6으로 감소.
    var i = 0
    var kk = k // k는 val이라서 var로 다시 저장. OOP를 위한 것?
    var len = str.length - 1
    while (i < len) {
        while (str[i] === '9') i++ // 비교 횟수를 줄이기 위함
        when {
            str[i] >= str[i + 1] -> i++ // Pass
            else -> str.deleteCharAt(i).takeIf { kk == 1 }?.apply { return str.toString() }.also {
                kk--
                len--
                i=0
            }
        }
    }
    return str.dropLast(kk).toString()
}

fun main() {
    print(solution(number, k)) // 775841
}

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

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

테스트 케이스 Test Case 추가합니다! 

 

출처: https://hsin.hr/coci/archive/2011_2012/

위의 링크에서 contest4, keks폴더입니다.

 

in out
67429495152 3 79495152
92885706616349
3066555730841879
7 98876693066555730841879
661742328215729068402
560788309769925990525
047074416512870613144
839550218540731094196
6307933122347117
61 999999955285407310941966307933122347117
Comments