def solution(brown, yellow):
answer = []
a = []
for i in range(1, int(yellow ** 0.5) + 1):
if yellow % i == 0:
a.append([yellow //i, i])
for element in a:
if 2*(element[0] + element[1]) + 4 == brown:
answer.append(element[0] + 2)
answer.append(element[1] + 2)
return answer
문제를 풀기 위한 아이디어: yellow와 brown의 관계에 대해 생각해보면 간단하게 해결할 수 있음
yellow 격자가 x * y 형태로 놓여 있다면 brown = 2x + 2y + 4의 관계식을 가짐.
yellow 격자의 x, y 값은 yellow 값의 약수를 찾아서 구한 뒤 brown과의 관계식을 만족하는지 확인
약수 구하는 알고리즘: 자연수 n의 제곱근까지의 약수를 구하면 그 짝이 되는 약수는 자동으로 구할 수 있음
def solution(brown, red):
for i in range(1, int(red**(1/2))+1):
if red % i == 0:
if 2*(i + red//i) == brown-4:
return [red//i+2, i+2]