[백준/파이썬] 14247번 : 나무자르기 풀이

Cornflower blue·2022년 3월 21일
0

백준 풀이

목록 보기
15/15

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)
profile
무언가를 만들어낸다는 것은 무척이나 즐거운 일입니다.

0개의 댓글