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):
arr.append([h[i], speed[i]])
arr.sort(key = lambda x:x[1])
for i in range(N):
total += arr[i][0] + arr[i][1] * i
print(total)