시나브로

[ 프로그래머스 ] 멀쩡한 사각형 본문

알고리즘/프로그래머스

[ 프로그래머스 ] 멀쩡한 사각형

혬혬 2020. 4. 4. 16:09
728x90

규칙성을 찾는다고 찾았는데 잘못찾았다. 

검색으로 찾은 규칙성은

최대 공약수로 나눈 크기의 사각형에서는 가로+세로-1의 사각형들이 잘린다는 것이다. 

그래서 최대공약수를 찾고 계산하면 된다. 

 

using namespace std;
long long solution(int w, int h)
{
	long long answer = 1;
	int fix = w;
	int f_w = w;
	int f_h = h;
	if (w < h)
		fix = h;
	for (long long i = fix; i >0; i--) {
		if (w % i == 0 && h % i == 0) {
			w =w/i;
			h =h/i;
			break;
		}
	}
	long long number = 0;

	number = (f_h/h)*(h+w-1);
	answer = (long long)f_w * f_h - number;

	return answer;
}
728x90
Comments