[프로그래머스] 카펫

해달·2022년 1월 18일
0


카펫의 크기를 구할 수 있는 공식은

전체 가로길이 = 노란카펫의 가로 + 2 (위 + 아래)
전체 세로길이 = 노란카펫의 세로 + 2 (왼쪽 + 오른쪽)

총 칸의 개수는 노란카펫 가로 x 2 + 노란카펫세로 x 2+ 4(모서리)

yellow의 개수를 기준으로 총 칸을 계산한 값에서 4를 뺏을 때
brown과 일치하는지 확인 한 뒤 전체카펫의 가로, 세로 길이를 구한다


function solution(brown, yellow) {
  var answer = []
debugger
  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
}

solution(24,24)

입출력 예 3번 케이스로 확인해보기

//  i가 12일 경우 
yellow_H = 12 // i
yellow_V = 2  // yellow / i

if(brown === ( 2 * yellow_H) + ( 2 * yellow_V) + 4 )

brown(24) === (2 * 12) + ( 2 * 2 ) +  4 // false (32)

//  i가 8일 경우 
yellow_H = 8 
yellow_V = 3  // yellow / i

if(brown === ( 2 * yellow_H) + ( 2 * yellow_V) + 4 )
  
brown(24) === (2 * 8) + ( 2 * 3) +  4 // false (26)

//  i가 6일 경우 
yellow_H = 6 (i)
yellow_V = 4  // yellow / i

if(brown === ( 2 * yellow_H) + ( 2 * yellow_V) + 4 )

brown(24) === (2 * 6) + ( 2 * 4) +  4 // true (24)

문제에 명확한 규칙이 있었는데,
처음에 규칙을 찾지 못해서 쉽게 풀지 못했다.
검색 후 다른사람의 풀이를 보고 그림을 그려가며 규칙에 대해 알 수 있었다.


참고한블로그 :
https://velog.io/@rud285/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%B9%B4%ED%8E%AB-javascript

0개의 댓글

관련 채용 정보