[python]カーペット[プログラマーレベル2]


問題の説明


Leoはカーペットを買いに行きましたが、真ん中に赤を塗って褐色に塗ったチェックカーペットが見えました.下図のように.
Leoは家に帰ってから、さっき見たじゅうたんに赤と茶色で塗った格子の数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがこのカーペットに茶色の格子の数brown,赤色の格子の数redをパラメータとして与えた場合,カーペットの横方向と縦方向の寸法を順番に並べて返す解関数を記述してください.

せいげんじょうけん


茶色の格子の水brownは8以上5000以下の自然水です.
赤いメッシュの数redは200000を超える自然数です.
カーペットの横方向の長さは、縦方向の長さ以上です.

I/O例

brown   red 	return

10	2	[4, 3]
8	1	[3, 3]
24	24	[8, 6]

に答える

def solution(brown, red):
    width = (brown + red) // 3
    height = 3
    
    while (width - 2) * (height - 2) != red:
        width -= 1
        height = (brown + red) // width
    
    return [width, height]