https://programmers.co.kr/learn/courses/30/lessons/1845
function solution(w, h) {
let answer = w*h;
let cut = gcd(w, h);
return answer-(w+h-cut);
}
function gcd(w, h) {
let mod = w % h;
if (mod == 0) return h;
return gcd(h, mod);
}
let w = 8;
let h = 12;
console.log(solution(w, h));
처음에 생각한 방법은 전체에서 대각선영역에 대해 빼서 구해야겠다고 생각했다.
그러다가 대각선이 얼마나 차지하는지 규칙을 찾다가 w+h-(w와h의 최대공약수)공식이 있단걸 찾게되고, 최대공약수는 유클리드호제법을 이용하여 구하였다.
(W 와 H를 나눈 값의 나머지가 0이 나올때 까지 반복하여 0이 나올 경우 0이 나올 수 있었던 H를 반환하는 행위 입니다. 아래 참고링크에서 확인가능.)
검색을 통해 방법을 찾으니 푸는 건 금방 풀수 있었습니다.
https://noogoonaa.tistory.com/74
https://m.blog.naver.com/PostView.nhn?blogId=zzinuhelios&logNo=120024685950&proxyReferer=https:%2F%2Fwww.google.com%2F