기울기를 구해서
i-1일 때 y값과 i일때 y값을 비교하며 각각의 개수를구해서 더하려고했다.
계속해서 틀린값이 나왔다.
JAVA로 풀려니 type에 의하여 정말 복잡해졌다
동적타입을 가진 자바스크립트를 사용한다면
너무나 간단해진다.
function solution(w, h) {
let l=h/w;
let count=0;
for( let i=1;i<=w;i++){
count+=Math.ceil(l*i);
}
return (w*h-count)*2;
}
최대공약수를 이용한 풀이였다.
( 이는 위의 링크를 타고 들어가면 그림으로 확실하게 알 수가 있다. )
이 직사각형 내부에서, 점선이 지나가는 직사각형의 개수는 몇개일까?
- 무조건 w'+h'-1임 을 알아차릴 수가 있다.
- 최대공약수가 1이던, 1보다 크던
- g * ( w' + h' -1 ) 임을 알 수 있다.
JAVA에서 최대공약수 구하는 방법
class Solution {
public long solution(int w, int h) {
long answer = 1;
long g = (long) gcd(w,h);
long wp = w/g, hp = h/g;
answer = ((long)w*h) - g*(wp + hp -1);
return answer;
}
public int gcd(int w, int h ){
int min = Math.min(w,h);
int g =1;
for(int i=1;i<=min;i++){
if( w % i == 0 && h % i == 0 ){
g = i;
}
}
return g;
}
}