[白俊/python]14247号:解樹


14247号:木を切る

  • キーメソッド
    最初は、毎日一番背の高い木を切り落とす.このように近づくと,与えられたテストコードさえ答えられない.
    コード審査官の助けで問題を解決し、核心的な方法は木を一度だけ切ることだ.特に、最終日に一度だけ成長速度が最も速い木を切る.伐採はいずれもn日あり、n本の木があるので、成長速度が最も遅い木から、最も速い木の順に並べて、切っておけばいいのです.
  • N = int(input())                        #나무의 개수(벌목할 일자)
    h = list(map(int, input().split()))     #나무의 길이들
    speed = list(map(int,input().split()))  #나무의 성장속도
    
    arr = []
    total = 0
    
    for i in range(N):                  # 나무의 초깃값(길이)과 성장속도를 2차원 배열에 담아준다.
        arr.append([h[i], speed[i]])
    
    arr.sort(key = lambda x:x[1])       # lambda 식을 이용해서 index=1에 해당하는 성장속도를 기준으로 정렬해주었다.
    
    for i in range(N):
        total += arr[i][0] + arr[i][1] * i
    
    print(total)