プログラマーSummer/Winter Coding(2019):正方形-Python 3解答


質問の表示 👈 クリック!

💡 に答える


✔確定問題
長さ
  • 、長さw、hの矩形が与えられると、正方形の数が返され、この正方形の長さは1、横、縦である.
  • 解✔方法

  • 長方形に対角線を描くと、同じ2つの直角三角形->1つの直角三角形から完全な正方形の個数を求め、その2倍を返します.

  • 上の図に示すように、対角線は最初の関数として扱われます->x=1,2,3,...wの場合、正常三角形の個数=x=1.2.3…wの場合、y値より小さい整数の最大値.

  • に質問
  • def solution(w,h):
        answer = 0
        
        for x in range(1, w+1):
            y = (-h/w)*x + h
            answer += int(y)
            
        return answer*2
    展開すると、テストケース11,12はタイムアウトします.
    ->縦横の長さが1本しかない場合:通常の三角形の個数は0
    横の長さと縦の長さは同じです.通常の三角形の個数は、元の長方形の総数-横の長さ(=縦の長さ)です.

    💡 完全なソースコード

    def solution(w,h):
        answer = 0
        
        if w == 1 or h ==1 :
            return 0
        elif w == h:
            return w * h - h
        else:
            for x in range(1, w+1):
                y = (-h/w)*x + h  #일차함수 식(기울기=-h/w, y절편=h)
                answer += int(y)
            return answer*2