[JS] 카펫

Created by
  • 무둥
Created at
Category
  1. JavaScript
Status
해결
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

◇ 내 답변

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반복문 또 넣어서 처리했는데
코드 길이는 짧은 주제에 최적화가 뒤지게 안 돼서 새로운 방법을 생각했