Programmers-カーペット


💻 じゅうたん


に質問


https://programmers.co.kr/learn/courses/30/lessons/42842

勘定科目

function solution(brown, yellow) {
    let totalBlock = brown + yellow;
    for (let a = 3; a < brown / 2 + 1; a++) {
        // a는 세로 b는 가로 
        if (totalBlock % a !== 0) {
            continue;
        }
        let b = ((brown - 2 * a + 4) / 2);
        if (b === totalBlock / a) {
            if (a >= b) {
                return [a, b];
            } else {
                return [b, a];
            }
        }
    }
}

¥¥АААААААААА



まず褐色と黄色を組み合わせた値が合計の組み合わせ値です.
横方向と縦方向の長さの積も全体のブロック値です.
褐色のブロック=2(縦-2)+2(横-2)
黄色の四角形=total-茶色の四角形=横*縦-茶色の四角形
したがって
儀式を作ることができます.
横方向=(褐色-2*縦方向+4/2);
縦は3から、縦は褐色の半分を超えてはいけません.
三路から、食欲を満たす横道があるとき
縦*横が合計の場合、対応する値は横になります.
問題では数字が大きい順に出力されることが要求されているので、戻る順番は大きいです.

📄 学識

  • 冷静な問題分析が重要です.