w를 x좌표의 길이라고 생각하고, x좌표를 for loop를 돌면서 x에 해당하는 y값(각 x축과 만나는 y지점)을 구하면 이게 최대값이 된다.
그걸 넘어서면 박스를 사용하지 못하니까 그 최대값 이하로는 쓸 수 있는 박스.
1차 함수를 어떻게 구하냐면,
y(최대값) = -h/w * x + h(h는 x인가 y절편임)
그 최대값보다 낮은 정수를 answer에 전부 더하고. 이게 박스가 1차함수를 기준으로 2개로 나눠지는 거니까
answer * 2를 리턴하면 끝
function solution(w, h) {
let answer=0;
for (let i=1; i<=w; i++) {
let max = ((-h/w)*i) + h;
//console.log(max);
answer += Math.floor(max);
}
return answer * 2;
}
console.log(solution(8, 12));
function solution(w,h){
const gcd = (a, b) => {
return b === 0 ? a : gcd(b, a % b);
};
return w * h - (w + h - gcd(w, h));
}
console.log(solution(8, 12));