티스토리 뷰
728x90
https://www.acmicpc.net/problem/14247
- 문제 :
영선이는 나무꾼으로 나무를 구하러 오전에 산에 오른다. 산에는 n개의 나무가 있는데, 영선이는 하루에 한 나무씩 n일 산에 오르며 나무를 잘라갈 것이다. 하지만 이 산은 영험한 기운이 있어 나무들이 밤만 되면 매우 빠른 속도로 자라는데, 그 자라는 길이는 나무마다 다르다.
따라서, 어느 나무를 먼저 잘라가느냐에 따라서 총 구할 수 있는 나무의 양이 다른데,
나무의 처음 길이와 하루에 자라는 양이 주어졌을 때, 영선이가 얻을 수 있는 최대 나무양을 구하시오.
참고로, 자른 이후에도 나무는 0부터 다시 자라기 때문에 같은 나무를 여러 번 자를 수는 있다.
- 풀이 :
하루에 자라는 길이가 낮은 나무 순서대로 선택하여 자르면 된다.
key를 하루에 자라는 길이로 하여 오름차순 정렬하였다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import sys
input = sys.stdin.readline
if __name__ == "__main__":
n = int(input())
hi = list(map(int,input().split()))
ai = list(map(int,input().split()))
tree = []
ans = 0
for i in range(n):
tree.append([hi[i],ai[i]])
tree.sort(key = lambda x : x[1])
for i in range(n):
ans += tree[i][0]+(tree[i][1]*i)
print(ans)
|
cs |
320x100
'Algorithm > Greedy' 카테고리의 다른 글
(Python) - BOJ(16162번) : 가희와 3단 고음 (0) | 2022.02.14 |
---|---|
(Python) - BOJ(16112번) : 5차 전직 (0) | 2022.02.11 |
(Python) - BOJ(13413번) : 오셀로 재배치 (0) | 2022.02.09 |
(Python) - BOJ(13305번) : 주유소 (0) | 2022.02.09 |
(Python) - BOJ(13019번) : A를 B로 (0) | 2022.02.09 |
댓글
© 2022 WonSeok, All rights reserved