Programmers 62048 멀쩡한 사각형
in Algorithm
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/62048
나의 풀이
좌측하단의 좌표를 (0, 0)이라고 생각하여 두 점 (0, h), (w,0) 을 지나는 직선을 구한다. \[y = - (h*x) / w + w\]
이 직선을 기준으로 정사각형의 개수를 알 수 있다.
나의 풀이에서는 y의 값에 따른 x값으로 정사각형의 개수를 구한다. \[x = w - (w*y)/h\]
y = h부터 1까지 위 식에 대입하여 y의 값에 따라 나타나는 x로 정사각형의 개수를 구한다.
풀이 코드 : 62048 멀쩡한 사각형
#include <cmath>
using namespace std;
long long solution(int w,int h) {
long long answer = 0;
for(int i = h;i>0;i--){
answer += w - ceil((double)w*i/h);
}
answer *= 2;
return answer;
}