[プログラマー]カーペット(レベル2)-完全ナビゲーション-JavaScript



1.問題の解釈


-brownには1行の枠線があります.
-横の長さが縦の長さに等しいか、縦の長さより長い.すなわち、縦の長さが横の長さを超えてはならない.

2.解答


-横*縦=brown+yellow
-横方向、縦方向の長さが少なくとも3(中心の無条件黄色の条件を満たす)
-反復文を用いて[横,縦]のすべての場合の数字を求める.
-でも、立ったままでは通れない.Math.ceil((brown+yellow)/3)さえ見つかれば十分です.
-(横+縦-2)*2枠線メッシュの個数を求めることができます.すなわち、brownの個数と同じであれば、満たされるメッシュの割合である.
function solution(brown, yellow) {
    const sum = brown + yellow;
    
    for (let h = 3; h <= Math.ceil(sum / 3); h += 1) {
        if (sum % h !== 0 || h < sum / h) continue;
        
        const v = sum / h;
        
        if ((h + v - 2) * 2 === brown) return [h, v];
    };
}