[プログラマー][Python]カーペット
📃 問題の説明
Leoはじゅうたんを買いに行きました.格子じゅうたんの列が見えました.真ん中は黄色で、一列は茶色で、下図のように見えます.
Leoは家に帰ってから、さっき見たじゅうたんの黄色と茶色の格子数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがこのカーペットに茶色の格子の数茶色、黄色の格子の数黄色をパラメータとして与えた場合、カーペットの横方向と縦方向の寸法を順番に並べて返します.
せいげんじょうけん
brownyellowreturn102[4, 3]81[3, 3]2424[8, 6]
💻 問題を解く
def solution(brown, yellow):
for i in range(1, int(yellow**0.5)+1): # 약수를 구하기 위해 sqrt(yellow) 값을 해준다.
if yellow % i == 0: # 해당 값이 약수라면
row, col = i, yellow//i # row 에는 약수를 col 에는 곱했을 때 yellow값이 나오는 수를 넣어준다.
if ((row+2)*2) + (col*2) == brown: # 갈색은 노란색의 테두리이기 때문에 테두리 개수를 구하는 식이 brown 개수와 같다면
return [col+2, row+2] # row,col에 +2 해준 후 리턴 (col >= row)
print(solution(10,2)) # result : [4,3]
print(solution(8,1)) # result : [3,3]
print(solution(24,24)) # result : [8,6]
キー(Key)
int(yellow**0.5))+1
まで送水する.関数コード
最初は関数で区切ってコードを書きましたが、関数で区切ってやる必要はないと思います.
def get_divisor(num): # 약수 구하는 함수 list를 리턴
divisor = []
for i in range(1, int(num**0.5)+1):
if num % i == 0:
divisor.append([i, num//i])
return divisor
def solution(brown, yellow):
yellow_list = get_divisor(yellow) # yellow_list = 약수로 이루어진 2차배열
for row, col in yellow_list:
if ((row+2)*2) + (col*2) == brown: # 갈색은 노란색의 테두리이기 때문에 테두리 개수를 구하는 식이 brown 개수와 같다면
return [col+2, row+2] # row,col에 +2 해준 후 리턴 (col >= row)
Reference
この問題について([プログラマー][Python]カーペット), 我々は、より多くの情報をここで見つけました https://velog.io/@insutance/프로그래머스Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol