
해당 문제를 보고 나는 다음과 같은 조건을 생각해냈다.
카펫의 가로 , 세로 크기를 결정짓는 것은 노락색 격자에서 결정이 난다고 생각했고,
노란색이 정수로 주어질때, 노란색을 만들어내는 약수중 두 수의 합이 가장 작은것을 기준으로 각각 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
}
}
결과는 잘 나왔다.
처음부터 시간이 걸렸어도 노트에 그려가며 풀길 잘한것 같다.
'TIL > kotlin 알고리즘' 카테고리의 다른 글
| kotlin 프로그래머스 lv1 N개의 최소공배수 (0) | 2024.02.29 |
|---|---|
| kotlin 프로그래머스 lv1 예상 대진표 (0) | 2024.02.28 |
| kotlin 프로그래머스 lv1 피보나치 수 (0) | 2024.02.27 |
| kotlin 프로그래머스 lv1 JadenCase 문자열 만들기 (0) | 2024.02.26 |
| kotlin 프로그래머스 lv1 2022 KAKAO BLIND RECRUITMENT신고 결과 받기 (0) | 2024.02.26 |