완전탐색 문제입니다.
brown은 (너비 + 높이) * 2 - 4 이므로 높이를 알면 너비를 구할 수 있습니다. 높이가 너비보다 작으므로 높이를 1부터 탐색합시다.
높이가 정해지면 brown을 통해 너비를 구합니다. 너비 = (brown + 4) / 2 - 높이 입니다.
높이와 너비가 나오면 넓이를 구할 수 있게 됩니다. 구한 넓이를 brown + yellow와 일치하는지 확인하고 일치하면 해당 너비와 높이를 배열에 담아 리턴하면 됩니다.
import Foundation
func solution(_ brown:Int, _ yellow:Int) -> [Int] {
// 높이를 1부터 탐색
var height = 1
while true {
// 너비 구하기
let width = (brown + 4) / 2 - height
// 넓이 구하기
let size = height * width
// 넓이 == brown + yellow 라면 정답 처리
if size == brown + yellow {
return [width, height]
}
// 아니면 다시 탐색
height += 1
}
}