[프로그래머스] 카펫 javascript

김_리트리버·2020년 9월 8일
2

[알고리즘]

목록 보기
14/47

문제풀이의 컨셉은 비슷했으나 규칙을 잘못 파악했다.

https://programmers.co.kr/learn/courses/30/lessons/42842

문제풀이의 컨셉은 비슷했으나 규칙을 잘못 파악했다.

전체 가로길이 = 중앙카펫의 가로+2

전체 세로길이 = 중앙카펫의 세로+2 이다.

그러면 중앙카펫의 가로, 세로길이를 구하면 전체 가로,세로길이를 구할 수 있게 된다.

중앙카펫은 모서리카펫과 아래의 관계를 갖고 있다.

모서리카펫 = 중앙카펫가로x2+중앙카펫세로x2+4

![https://velog.velcdn.com/images%2Frud285%2Fpost%2F74b888e5-0aa9-4049-8f65-e0dfef5e6c90%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Frud285%2Fpost%2F74b888e5-0aa9-4049-8f65-e0dfef5e6c90%2Fimage.png)

중앙카펫의 갯수를 기준으로 직사각형이 될 수 있는 후보를 반복해서 만들면서

후보가 되는 숫자가 모서리카펫과의 관계를 만족하면 중앙카펫의 가로, 세로 길이를 가지고 전체 가로, 세로길이를 구한다.

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

  for (let i = yellow; i >= 1; i--) {
    if (yellow % i === 0) {
      let yellow_H = i
      let yellow_V = yellow / i

      if (brown === 2 * yellow_H + 2 * yellow_V + 4) {
        answer = [yellow_H + 2, yellow_V + 2]
        break
      }
    }
  }
  return answer
}

전체 가로길이 = 중앙카펫의 가로+2

전체 세로길이 = 중앙카펫의 세로+2 이다.

그러면 중앙카펫의 가로, 세로길이를 구하면 전체 가로,세로길이를 구할 수 있게 된다.

중앙카펫은 모서리카펫과 아래의 관계를 갖고 있다.

모서리카펫 = 중앙카펫가로x2+중앙카펫세로x2+4

![https://velog.velcdn.com/images%2Frud285%2Fpost%2F74b888e5-0aa9-4049-8f65-e0dfef5e6c90%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Frud285%2Fpost%2F74b888e5-0aa9-4049-8f65-e0dfef5e6c90%2Fimage.png)

중앙카펫의 갯수를 기준으로 직사각형이 될 수 있는 후보를 반복해서 만들면서

후보가 되는 숫자가 모서리카펫과의 관계를 만족하면 중앙카펫의 가로, 세로 길이를 가지고 전체 가로, 세로길이를 구한다.

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

  for (let i = yellow; i >= 1; i--) {
    if (yellow % i === 0) {
      let yellow_W = i
      let yellow_H = yellow / i

      if (brown === 2 * yellow_W + 2 * yellow_H + 4) {
        answer = [yellow_W + 2, yellow_H + 2]
        break
      }
    }
  }
  return answer
}
profile
web-developer

0개의 댓글