[アルゴリズム]プログラマー-カーペット
4061 ワード
プログラマー-カーペット
説明する
def solution(brown, yellow):
total = brown + yellow
for row in range(3, int(total**0.5)+1):
if total % row == 0:
col = total // row
if (row-2)*(col-2) == yellow:
return [col, row]
print(solution(10, 2), [4,3])
print(solution(8, 1), [3,3])
print(solution(24, 24), [8,6])
黄色と茶色を加えると総数になります.形状全体をrow*columnと呼ぶ場合、黄色の個数は(row-2)*(column-2)個である.brownは最大5,000,yellowは最大2,000,000,000,000,000の形状を持つ可能性がありますが、行は3から(yellowの最小値は1,rowの最小値は3)Mathです.sqrt(total)さえできれば、いずれにしても、後は繰り返します.そうなると、可能な場合の数は10万に減ります.Reference
この問題について([アルゴリズム]プログラマー-カーペット), 我々は、より多くの情報をここで見つけました https://velog.io/@injoon2019/알고리즘-프로그래머스-카펫テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol