function solution(w, h) {
var answer = 1;
const gcd = greatestCommonDivisor(w,h)
answer = w * h - (h + w - gcd)
return answer;
}
let greatestCommonDivisor = (a, b) => {
while(b > 0){
let r = a % b;
a = b;
b = r;
}
return a;
}
- 이번 문제에서는 x,y축으로 놓고 보았을 때 x축은 2마다, y축은 3마다 반복되는 패턴을 확인할 수 있다.
- 이는 가로 8과 세로 12의 최대공약수인 4로 각각을 나누었을 때를 의미하며, 2*3 사각형에서 잘려나가는 사각형의 갯수는 x+y-1이라는 것을 알 수 있다. 이 값에 처음에 나는 최대공약수 4를 곱하면 정답이 산출된다.
- 전체로 대입해서 보면 answer = (x/최대공약수 + y/최대공약수 - 1) * 최대공약수이며 다시 계산하면
- answer = x + y - 최대공약수가 된다.
function solution(num1, num2) {
const gcd = (a, b) => a % b === 0 ? b : gcd(b, a % b);
return gcd(num1, num2);
}