갈색과 노란 타일의 개수가 주어졌을 때, 카펫의 전체 타일 수와 모양을 이용하여 카펫의 가로와 세로 길이를 구하는 문제이다.
카펫은 가장자리가 갈색 타일로 둘러싸여 있고, 내부는 노란 타일로 채워져 있다.
예를 들어, 갈색 타일이 10개, 노란 타일이 2개일 경우, 카펫의 가로 길이는 4, 세로 길이는 3이 되어 [4, 3]을 반환한다.

전체 타일 수(갈색 + 노란)를 이용하여 가능한 가로와 세로 길이의 조합(약수 쌍)을 구한다.
각 조합에 대해 갈색 타일의 개수 2*x + 2*y - 4와 노란 타일의 개수 (x - 2) * (y - 2)를 계산하여 주어진 조건에 맞는 조합을 찾아 반환한다.
import Foundation
func solution(_ brown: Int, _ yellow: Int) -> [Int] {
let xy = brown + yellow
var divisor: [Int] = []
for num in 1...xy {
if xy % num == 0 {
divisor.append(num)
}
}
for num in divisor[(divisor.count/2)...] {
let x = num
let y = xy / num
if 2*x + 2*y - 4 == brown && (x-2)*(y-2) == yellow {
return [x, y]
}
}
return []
}