알고리즘

릿코드 165. Compare Version Numbers 코틀린

rkrkrr0101 2024. 5. 3. 09:48

콤마단위로 찢은다음 각 자리를 int로 변경후 왼쪽부터 비교

서로 자리수가 다른경우엔 자리수맞는곳까지만 비교하고,뒷자리는 떼서 인트로 변경해서 비교



정답

import kotlin.math.max
import kotlin.math.min

class Solution {
    fun compareVersion(version1: String, version2: String): Int {
        val version1List = version1.split(".").map { it.toInt() }
        val version2List = version2.split(".").map { it.toInt() }
        val maxIndex= max(version1List.size, version2List.size)
        val minIndex= min(version1List.size, version2List.size)
        
        for (i in 0 until minIndex) {
            if (version1List[i] > version2List[i]) {return 1}
            if (version1List[i] < version2List[i]) {return -1}
        }
        
        if (maxIndex!=minIndex){
            val version1MinorStr = version1List.subList(minIndex, version1List.size)
                .toString().filter { it.isDigit() }
            var version1Minor=0
            if (version1MinorStr!=""){
                version1Minor=version1MinorStr.toInt()
            }
            
            var version2Minor=0
            val version2MinorStr = version2List.subList(minIndex,version2List.size)
                .toString().filter { it.isDigit() }
            if (version2MinorStr!=""){
                version2Minor=version2MinorStr.toInt()
            }

            if (version1Minor>version2Minor){return 1}
            if (version1Minor<version2Minor){return -1}
        }
        
        return 0



    }
}