https://programmers.co.kr/learn/courses/30/lessons/42842
def solution(brown, red):
answer = []
temp = brown + red
#가로길이는 세로 길이와 같거나, 세로길이보다 길다.
sero = 3
garo = temp // sero
while(garo >= sero):
if((garo - 2 )* (sero -2) == red):
answer = [garo, sero]
break
garo -=1
sero = temp // garo
return answer
가로와 세로를 정해야 하는데 빨간색이 무조건 1개가 있으므로
세로의 길이를 3으로 정한다. 그리고 가로는 갈색과 빨간색 격자를 더한 카펫의 양을 // 3 한것으로 시작한다.
가로가 더 길거나 같다고 했기 때문에 가로가 더 길거나 같을 때까지 반복하고 갈색이 전체를 한 줄로 두르고 있기 때문에 전체 가로 -2, 세로 -2 씩 해준 것을 곱하면 빨간색의 개수가 된다. 빨간색이 됐을 때 answer이고 아닐 때는 가로를 1개씩 줄이면서 계속 계산한다.