def solution(brown, yellow):
# brown + yellow = carpet면적
# carpet면적 = a*b (a 가로 > b 세로) a*b의 경우의 수 찾기 필요하다.
# carpet의 면적을 구할 때, 한 줄 짜리는 고려 할 필요 없음 => 1과 구하려는 수를 제외한 약수 구하는 문제랑 똑같음
# a, b를 구하고 a 혹은 b를 이용하여 검증 단계를 거쳐야 한다.
total_tile = brown + yellow
for tmp in range(2, total_tile//2):
#2로 나누는 이유, 1, 2, 3, 6 같은 약수가 있으면 2로 나눴을 때, 3이 나온다.
#이는 원래 수를 제외하고 제일 큰 약수까지 세겠다는 뜻과 똑같다.
if total_tile%tmp == 0:
a = total_tile//tmp
b = tmp
if a < b :
a, b = b, a
check_tiles = (a - 2)*(b - 2) #제일 바깥 쪽 타일 제외 한 안쪽 타일 수
if check_tiles >= yellow: #check_tiles가 만약 yellow 타일 수 보다 적으면 안 된다.
return [a, b]