풀이 소요시간 : 측정안함
일차 함수를 떠올리며 문제를 풀었다. O(N)
으로 풀이 가능하다.
일전에 풀이했던 두 원사이의 점 갯수 구하기 문제와 비슷한 풀이 방법이였다.
long long Total = static_cast<long long>(w) * h;
평소에 타입 캐스팅을 할 때 (long long)
같은 괄호식 타입캐스팅을 활용했는데 위의 방식이 구현상 깔끔한 것 같아 적극 활용하기로 했다.
#include <algorithm>
#include <cmath>
using namespace std;
long long solution(int w,int h) {
long long Cnt = 0;
long long Total = static_cast<long long>(w) * h;
for(int px = 0; px < w; px++)
{
int nx = px + 1;
int py = ceil(static_cast<double>(-h) * px / w + h);
int ny = floor(static_cast<double>(-h) * nx / w + h);
Cnt += static_cast<long long>(py - ny);
}
return Total - Cnt;
}