- 주어진 brown과 red의 여러 조합에 따라 생성되는 값 중, 위 그림처럼 brown의 테두리가 하나인 조건을 구하면 된다.
- 즉 여러 조합 중 특정 조건만 필터링 하면 된다는 뜻인데, 이는 곧 여러 조합을 구하기 위해 완전 탐색을 해야한다.
def solution(brown, red):
sum = brown + red
big_set = [(sum // i, i) for i in range(1, sum) if sum % i == 0 ]
for first, two in big_set:
if (first - 2) * (two - 2) == red and first >= two:
return [first, two]
big_set 리스트를 만들 때, sum의 약수를 만드는 것이 관건이다.
first와 second에 각각 -2를 해주었는데, 네 변의 테두리를 각각 1만큼 차지 하고 있기 때문에 제하여 곱해주었다(즉, 이는 red의 넓이임을 알 수 있다).