이번 문제는 빨리 풀려서 좋았다...!
카펫의 가장자리가 brown, 안쪽이 yellow로 칠해졌다고 가정,
brown과 yellow의 수가 주어졌을 때 카펫의 크기를 구함.
코드 구현 in JavaScript
function solution(brown, yellow) {
// brown = 2(w+h) - 4
// yellow = w*h - brown
// 2 <= h <= sqrt(brown + yellow)
const cap = Math.sqrt(brown + yellow)
const answer = []
for (let h=2; h<=cap;h++){
let w = (yellow + brown) / h
let w2 = (brown+4)/2 - h
if (w ===w2 && Number.isInteger(w)){
answer.push(w, h)
break
}
}
return answer
}
- 수학식으로 먼저 풀어보고 코드를 그에 따라 구현했다.
- 카펫의 높이 (h)가 너비 (w)보다 항상 같거나 작다는 것에 착안, 카펫의 크기가 0이 아닌 이상 높이는 최소 두 줄이어야 하므로 반복문을 h기준으로 잡았다.
- 이 문제는 다른 분들의 풀이도 각자의 수학식을 사용해 가지각색이어서 흥미로웠다!
'프로젝트들 > 코딩 테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 - 전화번호 목록 (Lv.2) in Python (0) | 2021.02.06 |
---|---|
[코딩테스트] 프로그래머스 - n진수 게임 (Lv.2) in Python (0) | 2021.02.06 |
[코딩테스트] 프로그래머스 - 가장 큰 수 (Lv2) in JS (0) | 2021.01.23 |
[코딩테스트] 프로그래머스 - 소수 찾기 (lv2) in JavaScript (0) | 2021.01.21 |
[코딩테스트] 프로그래머스 - 완주하지 못한 선수 (Lv1) in Python3 / JS (0) | 2021.01.11 |
댓글