이 문제는 수학 문제와 관련이 많고

어떤 규칙이 있을지 살펴보다가

서로소인경우 w+h-1인것을 알게되었다.

이후 못쓰는 사각형 조건 2가지를 발견하였고

1. if (w == 1 || h == 1) return 0;

2. 최대공배수 * (w*h/최대공배수 -1)

전체 사각형의 수 w*h 에서 빼주면 된다.

참고로 (long long)w * h 안해주면 값이 초과되어 실패가 될 수 있다.

 

int gcd(int a, int b) { return (a % b == 0 ? b : gcd(b, a % b)); }

long long solution(int w, int h) {
	long long answer = 1;

	if (w == 1 || h == 1)
	{
		return 0;
	}

	int a = gcd(w, h);
	answer = ((long long)w * (long long)h) - (w / a + h / a - 1) * a;

	return answer;
}
Posted by pi92

블로그 이미지
pi92

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.12
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함