[プログラマーlv.2]カーペットby JS


✉ Question


🔗 質問リンク

問題の説明


Leoはじゅうたんを買いに行きました.格子じゅうたんの列が見えました.真ん中は黄色で、一列は茶色で、下図のように見えます.

Leoは家に帰ってから、さっき見たじゅうたんの黄色と茶色の格子数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがこのカーペットに茶色の格子の数茶色、黄色の格子の数黄色をパラメータとして与えた場合、カーペットの横方向と縦方向の寸法を順番に並べて返します.

せいげんじょうけん

  • 茶色の格子の水茶色は8以上5000以下の自然水です.
  • 黄色のメッシュの数は、1以上200000以下の自然数です.
  • カーペットの横方向の長さは、縦方向の長さ以上である.
  • 💌 Answer


    完全ナビゲーションの問題
    正解が見つかるまで、最大横長yellow의 개수 + 2の方法で長さを短くします.
    まず[가로 + 세로]値と[가로 * 세로]値を共通変数とする二次方程式を導出し,次に街を未知数とする二次方程式を解いたが,複雑すぎるのでコード整理を行う!😂
    function solution(brown, yellow) {
        const answer = [];
       
        let width = 0;
        let height = 0;
    
        for(let i = yellow; i > 0; i--) {
            if(getWidth(brown, yellow, i)) {
                width = i + 2;
                height = (brown + yellow) / width;
                break;
            }
        }
        answer.push(width);
        answer.push(height);
    
        return answer;
    }
    
    function getWidth(brown, yellow, width) {
        return (width + 2) * (width + 2) - (brown + 4) * (width + 2) / 2 + (brown + yellow) === 0 ? true : false;
    }