# 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return def solution(brown, yellow): answer = [] # yellow의 가로, 세로 길이 초기화 yellow_x = 0 yellow_y = 0 for i in range(1, yellow+1): # i x yellow/i = yellow가 성립되기 위한 if 문 if yellow%i == 0: yellow_x = int(yellow/i) yellow_y = i # brown의 가로, 세로를 a, b라고 가정했을 때 # yellow는 (a-2)(b-2)가 성립 # 따라서, brown의 개수는 brown의 넓이 ab - yellow의 넓이 (a-2)(b-2) # ab - (a-2)(b-2) = 2a+2b+4 = brown의 개수 if yellow_x*2 + yellow_y*2 + 4 == brown: answer.append(yellow_x + 2) answer.append(yellow_y + 2) return sorted(answer, reverse = True) # 오름차순 정렬 return answer
💡check point
1) brown의 개수 = brown의 넓이 (ab) - yellow의 넓이 (a-2)(b-2)
→ ab - (a-2)(b-2) = 2a+2b+4
2) 2번째 if문이 1번째 if문에 종속되어야만 올바른 결과를 출력한다.