TIL/kotlin 알고리즘

kotlin 프로그래머스 lv1 카펫

crablo 2024. 2. 27. 14:32
728x90

해당 문제를 보고 나는 다음과 같은 조건을 생각해냈다.

카펫의 가로 , 세로 크기를 결정짓는 것은 노락색 격자에서 결정이 난다고 생각했고,

노란색이 정수로 주어질때, 노란색을 만들어내는 약수중 두 수의 합이 가장 작은것을 기준으로 각각 2씩 더하면

가로격자 , 세로격자의 크기가 나온다고 말이다.

그렇게 생각한 이유는..

다음과 같았다.

그래서 해당 내용을 코드로 표현 해보았다.

class Solution {
    fun solution(brown: Int, yellow: Int): IntArray {
        var result = intArrayOf(0, 0)

       
        
        for (width in 1..yellow) {  //width 는 1~yellow 범위 숫자
            if (yellow % width == 0) { 
                val height = yellow / width  //height는 yellow를 width로 나눈것과 같다.

                
                if (2 * (width + height) + 4 == brown && width>=height){
                    result[0] = width + 2
                    result[1] = height + 2
                    break
                }
            }
        }

        return result
    }
}

결과는 잘 나왔다.

처음부터 시간이 걸렸어도 노트에 그려가며 풀길 잘한것 같다.

 

728x90