[programmers]Breutforce-カーペット(Python)
6670 ワード
ソース
Leoはじゅうたんを買いに行きました.格子じゅうたんの列が見えました.真ん中は黄色で、一列は茶色で、下図のように見えます.
Leoは家に帰ってから、さっき見たじゅうたんの黄色と茶色の格子数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがこのカーペットに茶色の格子の数茶色、黄色の格子の数黄色をパラメータとして与えた場合、カーペットの横方向と縦方向の寸法を順番に並べて返します.
茶色の格子の水茶色は8以上5000以下の自然水です. 黄色のメッシュの数は、1以上200000以下の自然数です. カーペットの横方向の長さは、縦方向の長さ以上である.
brownyellowreturn102[4, 3]81[3, 3]2424[8, 6]
次にfor文からyellow areaに格納されている値を取得し、カーペットの真ん中の領域を指定して、bownの領域が所定の値と同じかどうかを比較します.
for文の範囲は黄色//2+2で、このコードでは黄色*(1/2)+1です.
それから私は(黄色の領域の横方向の長さ+2)(黄色の領域の縦方向の長さ+2)-黄色=brownを作成して、このコード
2*(i+黄色//i)=brown-4で検証した.
私のコードに比べて、結果も確かに速いです.
Brute Force:カーペット[Lv 2]
問題の説明
Leoはじゅうたんを買いに行きました.格子じゅうたんの列が見えました.真ん中は黄色で、一列は茶色で、下図のように見えます.
Leoは家に帰ってから、さっき見たじゅうたんの黄色と茶色の格子数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがこのカーペットに茶色の格子の数茶色、黄色の格子の数黄色をパラメータとして与えた場合、カーペットの横方向と縦方向の寸法を順番に並べて返します.
せいげんじょうけん
I/O例
brownyellowreturn102[4, 3]81[3, 3]2424[8, 6]
Solution
説明する
def solution(brown, yellow):
answer = []
yellow_area = set()
for i in range(1, yellow // 2 + 2):
if yellow % i == 0:
a, b = i, yellow // i
tmp = tuple(sorted([a, b]))
yellow_area.add(tmp)
yellow_area = list(yellow_area)
for aliquots in yellow_area:
len_col = aliquots[0] + 2
len_row = aliquots[1] + 2
if len_col * len_row - yellow == brown:
answer = [len_row, len_col]
break
return answer
yellowを1からyellow/2+1に分割し、残りの数が0の場合は、昇順に分割した数と値をtupleに設定し、yellow areaに追加します.つまり、黄色い薬液を貯蔵する.次にfor文からyellow areaに格納されている値を取得し、カーペットの真ん中の領域を指定して、bownの領域が所定の値と同じかどうかを比較します.
結果
Best Code
def solution(brown, yellow):
for i in range(1, int(yellow**(1/2))+1):
if yellow % i == 0:
if 2*(i + yellow//i) == brown-4:
return [yellow//i+2, i+2]
原理自体と私が作ったコードの差は多くありません.しかし、私のコードよりも効率的で、長さが圧縮されています.for文の範囲は黄色//2+2で、このコードでは黄色*(1/2)+1です.
それから私は(黄色の領域の横方向の長さ+2)(黄色の領域の縦方向の長さ+2)-黄色=brownを作成して、このコード
2*(i+黄色//i)=brown-4で検証した.
結果
私のコードに比べて、結果も確かに速いです.
Reference
この問題について([programmers]Breutforce-カーペット(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@deannn/Programmers-Brute-force-카펫-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol