본문 바로가기
프로젝트들/코딩 테스트

[코딩테스트] 프로그래머스 - 카펫 (Lv2) in JS

by 코곰 2021. 1. 22.

이번 문제는 빨리 풀려서 좋았다...!

 

카펫의 가장자리가 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기준으로 잡았다.

 

 

 

 

- 이 문제는 다른 분들의 풀이도 각자의 수학식을 사용해 가지각색이어서 흥미로웠다!

댓글