그림을 보고 가장 작은 조각으로 나눠야겠다 라고 생각을 했다.
그래서 최대공약수까진 생각을 했는데, 그 내부에서의 규칙을 찾지를 못해서 헤맸던 문제.
실수했던 부분은 toLong()처리를 해주지 않아서 계속 오류가 났다.
문제에서 answer이 Long형식 반환이기 때문에 이 점을 꼭 고려하며 개발해야한다.
gcd 구하는 곳에서 0이 아닐경우 return 할 때 arguments를 (b, b%a)로 넘긴 부분.
(b, a%b)다.
import kotlin.math.max
import kotlin.math.min
class Solution1 {
fun solution(w: Int, h: Int): Long {
val g = gcd(max(w, h), min(w, h))
val longw = w.toLong()
val longh = h.toLong()
return ((longw * longh) - (longh+longw-g))
}
fun gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)
}
fun main() {
Solution1().solution(8, 12)
}