728x90
[ Softeer 연습문제 - 금고털이 ]
- 문제명 : 금고털이
- 사용언어 : Python
- 사용 알고리즘 : 그리디 알고리즘
문제 설명
루팡은 배낭을 하나 메고 은행금고에 들어왔다. 금고 안에는 값비싼 금, 은, 백금 등의 귀금속 덩어리가 잔뜩 들어있다. 배낭은 W ㎏까지 담을 수 있다.
각 금속의 무게와 무게당 가격이 주어졌을 때 배낭을 채울 수 있는 가장 값비싼 가격은 얼마인가?
루팡은 전동톱을 가지고 있으며 귀금속은 톱으로 자르면 잘려진 부분의 무게만큼 가치를 가진다.
▼ 실행 코드 ▼
import sys
input = sys.stdin.readline
W, N = map(int, input().split())
jewelry = [list(map(int, input().split())) for _ in range(N)]
# 귀금속을 무게당 가격 기준으로 내림차순 정렬
jewelry.sort(key = lambda x : x[1], reverse = True)
result = 0
for m, p in jewelry:
if W - m > 0:
# 배낭에 귀금속을 통째로 넣을 수 있을 때
W -= m
result += (m*p)
else:
# 배낭에 귀금속을 일부만 넣을 수 있을 때
result += (W*p)
break
print(result)
▼ 실행결과 ▼
학습 회고
: 주어진 배낭의 용량에 따라 귀금속을 선택하여 배낭에 넣어 최대 가치를 계산하는 그리디(Greedy) 알고리즘을 사용하여 구현하였다. 귀금속을 통째로 넣을 수 있을 때와 일부만 넣을 수 있을 때로 조건을 나누어서 조건에 따라 배낭에 담을 수 있는 가장 비싼 가격을 출력했다.
728x90
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] Softeer 장애물 인식 프로그램 (Python) (0) | 2024.01.24 |
---|---|
[Algorithm] Softeer 조립라인 - Lv.3 (Python) (0) | 2024.01.23 |
[Algorithm] BAEKJOON 12789번. 도키도키 간식드리미 (Python) (0) | 2024.01.18 |
[Algorithm] BAEKJOON 2504번. 괄호의 값 (Python) (0) | 2024.01.17 |
[Algorithm] 주차 요금 계산 - 2022 KAKAO BLIND RECRUITMENT (0) | 2024.01.16 |
댓글