brown + yellow 한 뒤 for문 돌려서 딱 나누어 떨어지는 친구들을 구한다 (얘들이 이제 가로세로 길이의 경우의 수임)
어짜피 갈색 타일은 개수가 정해져 있음, 그러므로 전체 - 갈색 하면 노란색도 구할 수 있음
여러가지 case의 필요한 갈색, 노란색 타일을 구한 뒤 주어진 갈색, 노란색과 비교하고 맞을 때까지 반복
def need(total, brown, yellow): # 해당 크기에서 필요한 타일 개수 각각 return
# 겉면 4개 - 겹치는 부분(4개) => 해당 크기에서 필요한 갈색
need_brown = (brown * 2 + yellow * 2) - 4
# 전체 - 해당 크기에서 필요한 갈색 => 해당 크기에서 필요한 노란색
need_yellow = total - need_brown
return need_brown, need_yellow
def solution(brown, yellow):
# 전체 타일 개수
total = brown + yellow
# 모든 가로, 세로 경우의 수
cases = [(total // i, i) for i in range(2, total) if not (total / i) % 1]
# 각각 사용할 brown, yellow 순회
for c in cases:
# 여러가지 타일을 놓는 case 대입해서 필요한 타일 개수 구하기
need_brown, need_yellow = need(total, c[0], c[1])
# 내가 입력한 case에서 사용한 타일 == 주어진 타일일 경우 => 정답
if (need_brown, need_yellow) == (brown, yellow):
return c