어떻게 최대공약수를 떠올린지는 모르겠지만 사람들은 이렇게 풀었다.
func gcd(_ a:Int, _ b:Int) -> Int64{
if a == 0 { return Int64(b) }
return gcd(b%a,a)
}
나는 아래처럼 규칙을 찾으려했으나 , 39점을 맞았다. 한시간 고민하고 포기하였다. 최대공약수나 외워야겠다.
import Foundation
func solution(_ w:Int, _ h:Int) -> Int64{
var answer:Int64 = 0
if w == 1 || h == 1{return Int64(0)}
var tmpW = min(w,h)
var tmpH = max(w,h)
print(tmpW,tmpH)
var total = tmpW * tmpH
var extract = 0
// if tmpW % 2 == 0 {
// extract = (tmpH/tmpW+1)*tmpW
// return Int64(total) - Int64(extract)
// }
if tmpH % tmpW == 0 {
extract = tmpH / tmpW * tmpH
}
else {
var moks = tmpH / tmpW
var namuzi = tmpH % tmpW
extract = (moks+1) * tmpH + (namuzi-1)
}
answer = Int64(total) - Int64(extract)
return answer
}