https://school.programmers.co.kr/learn/courses/30/lessons/42842?language=python3
def solution(brown, yellow):
sum_x_y = (brown + 4) // 2
multiply_x_y = yellow + brown
for i in range(1, sum_x_y):
if multiply_x_y == i * (sum_x_y - i):
return [sum_x_y - i, i]
# x, y
# brown = 2(x-1) + 2(y-1) = 2(x+y)-4
# yellow = xy - brown
# x+y = (brown+4) / 2
# xy = yellow - 4 + 2(x+y)
갈색 격자의 경우 카펫의 둘레와 같다. 가로, 세로를 각각 x, y라 했을 때 갈색은 brown = 2(x-1) + 2(y-1) = 2(x+y)-4
라고 할 수 있다. 노란 격자는 카펫의 넓이에서 갈색을 뺀 것과 같다. 따라서, yellow = xy - brown
이다.
즉, x+y = (brown+4) / 2
, xy = yellow + brown
를 만족하는 x, y를 구하였다.