프로그래머스 카펫
넘겨받은 brown과 yellow를 더하면 총 면적이다.
height의 최소는 3이다. 그리고 width 보다 같거나 작다.
총 면적을 height로 나눈게 딱 떨어질때만 계산해 보면 된다.
따라서 width는 total // height 인게 당연하므로,
2width + 2height -4 == brown 인지만 체크 하면된다. brown은 테두리 부분만 가져가므로, 위아래, 오른쪽, 왼쪽과 겹치는 모서리 4칸을 빼주면 된다.
def solution(brown, yellow):
answer = []
total = brown + yellow
for height in range(3, (total // 2) + 1): # 굳이 total//2 + 1 안해도 된다. 끝까지 가기 전에 답이 나오니까
if total % height == 0:
width = total // height
if width >= height: # 얘는 없어도 된다. width를 최소치부터 올렸으니까
if 2 * width + 2 * height - 4 == brown:
return [width, height]
return answer