Kotlin/코딩테스트

[프로그래머스] 겹치는 선분의 길이 - kotlin

깨노비 2023. 3. 10. 00:29
728x90
반응형

.

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

class Solution {
    
    fun solution(lines: Array<IntArray>): Int {
        var answer: Int = 0
        val line1: IntArray = calLine(lines[0], lines[1])
        val line2: IntArray = calLine(lines[1], lines[2])
        val line3: IntArray = calLine(lines[0], lines[2])

        val from: Int = minOf(line1[0], line2[0], line3[0])
        val to: Int = maxOf(line1[1], line2[1], line3[1])
        var status: Boolean = false

        for (i in from..to) {
            status = when (i) {
                in line1[0]..line1[1],
                in line2[0]..line2[1],
                in line3[0]..line3[1] -> {
                    if (status) answer++
                    true
                }
                else -> false
            }
        }

        return answer

    }

    fun calLine(line1: IntArray, line2: IntArray): IntArray {
        val x = max(line1[0], line2[0])
        val y = min(line1[1], line2[1])

        return if (y > x) {
            intArrayOf(x, y)
        } else {
            intArrayOf(101, -101)
        }
    }
}
728x90
반응형