프로그래머스 Level 2 - 카펫
📌 문제 설명
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2Fbcb18f3a-120a-4e7d-950f-1a4977589a43%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-23%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.33.17.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2Ff1ac96d8-35de-4289-a219-aa621b0507cc%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-12-23%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.34.00.png)
📌 생각한 풀이 방법
- 격자의 갯수에 가능한 조합을 possibleArr에 저장
- brown의 갯수는 (가로+세로)*2-4라는 공식이 성립하기 때문에 조건에 부합하는 조합을 반환함
📌 풀이
function solution(brown, yellow) {
let total = brown + yellow;
let possibleArr = [];
for (let i = 1; i < Math.floor(total / 2); i++) {
if (total % i === 0 && total / i >= i) {
possibleArr.push([total / i, i]);
}
}
return findAnswerWithBrown(possibleArr, brown);
function findAnswerWithBrown(arr, brown) {
for (let i = 0; i < arr.length; i++) {
let currentTotal = (arr[i][0] + arr[i][1]) * 2 - 4;
if (currentTotal === brown) {
return arr[i];
}
}
}
}