카펫의 크기를 구할 수 있는 공식은
전체 가로길이 = 노란카펫의 가로 + 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)
// 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)
문제에 명확한 규칙이 있었는데,
처음에 규칙을 찾지 못해서 쉽게 풀지 못했다.
검색 후 다른사람의 풀이를 보고 그림을 그려가며 규칙에 대해 알 수 있었다.