# [JS] 카펫

> Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

> Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

![Image](https://upload.cafenono.com/image/slashpagePost/20250409/100629_H7mPfLEPvFZafETNdn?q=80&s=1280x180&t=outside&f=webp)

---

### ◇ 내 답변

```
function solution(brown, yellow) {
    let answer = [];
    let array = [];
    
    let totalArea = brown + yellow
    
    let yellowMeasure = []
    
    for (let i = 1; i <= yellow; i++) {
        if (yellow % i === 0) {
            yellowMeasure.push(i)
        }
    }
    
    for (let i = 3; i < totalArea; i++) {
        for (let el of yellowMeasure) {
        if (((el + 2) * (i) === totalArea) && i >= el + 2) {
            answer.push([i, el+2])
            break;
            }
        }
    }
    
    answer = answer.find((el) => (el[0] - 2) * (el[1] - 2) === yellow)
    return answer;
}
```

1. 전체 넓이는 brown과 yellow를 더한 값

2. yellow의 약수 ((약수+2)는 세로) 구해서 yellowMeasure 배열에 넣기

3. yellowMeasure 배열 순회하며 조건 만족하는 애들 answer 배열에 추가

- (약수+2) * i 가 전체 넓이인 애

- 동시에 i(가로)가 (약수+2)보다 크거나 같은 애

4. answer에서 yellow 개수 충족하는 애 찾아서 최종 답으로 도출

처음에는 15번째 i반복문 안에 m반복문 또 넣어서 처리했는데

코드 길이는 짧은 주제에 최적화가 뒤지게 안 돼서 새로운 방법을 생각했

For the site tree, see the [root Markdown](https://slashpage.com/%EB%AC%B4%EB%91%A5-rypb2.md).
