카펫

김현민·2021년 9월 30일
0

Algorithm

목록 보기
100/126
post-thumbnail

코드


// 3이상의 약수 조합을 만들어내는 함수
function divNums(nums) {
  nums.reverse()

//  3미만이면 테두리를 두를 수 없으므로 3미만과 그의 약수를 제거
  nums.map((v) => {
    if (v < 3) {
      nums.pop()
      nums.shift()
    }
  })
  
  
  let idxL = 0
  let idxR = nums.length - 1
  
//  약수들의 조합을 담는 변수
  let div = []
  while (idxL <= idxR) {
    let temp = []

    temp.push(nums[idxL++])
    temp.push(nums[idxR--])

    div.push(temp)
  }

  return div
}

function solution(brown, yellow) {
  var answer = []

  let size = brown + yellow
  
  // 약수 담는 nums
  let nums = []

  // 일단 약수들을 담는다.
  for (let i = 1; i <= size; i++) {
    if (size % i === 0) nums.push(i)
  }

  let div = divNums(nums)
  
  for (let i = 0; i < div.length; i++) {
    let element = div[i]
	
    // 전체 사각형에서 brown테두리 갯수를 구하고 그 수를 빼면 yellow가 나온다
    let bb = element[0] * 2 + element[1] * 2 - 4
    let yy = size - bb
	
    // 계산결과고 input값들과 같은 요소를 answer에 대입.
    if (bb === brown && yy === yellow) answer = element
  }

  return answer
}

solution(8, 1)
profile
Jr. FE Dev

0개의 댓글