일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백준 알고리즘
- 소프티어
- BFS
- programmers
- 코딩교육봉사
- CJ UNIT
- 파이썬
- 시나공
- 백준
- C++
- 1과목
- 문제풀이
- 회고
- 정보처리산업기사
- SQL
- 자바
- 알고리즘
- 코틀린
- kotlin
- 스프링
- 프로그래머스
- softeer
- python
- java
- 백준알고리즘
- 데이터베이스
- SW봉사
- 코딩봉사
- 공부일지
- MYSQL
Archives
- Today
- Total
JIE0025
[Softeer][level2] 금고털이 - 파이썬(Python) 본문
728x90
https://softeer.ai/practice/info.do?idx=1&eid=395
문제
루팡은 배낭을 하나 메고 은행금고에 들어왔다. 금고 안에는 값비싼 금, 은, 백금 등의 귀금속 덩어리가 잔뜩 들어있다. 배낭은 W ㎏까지 담을 수 있다.
각 금속의 무게와 무게당 가격이 주어졌을 때 배낭을 채울 수 있는 가장 값비싼 가격은 얼마인가?
루팡은 전동톱을 가지고 있으며 귀금속은 톱으로 자르면 잘려진 부분의 무게만큼 가치를 가진다.
제약조건
1 ≤ N ≤ 106인 정수
1 ≤ W ≤ 104인 정수
1 ≤ Mi, Pi ≤ 104인 정수
💡 사고한 내용
💻 내가 쓴 정답코드
import sys
input = sys.stdin.readline
w, n = map(int,input().split())
valueInfo = [list(map(int,input().split())) for _ in range(n)]
valueInfo.sort(key = lambda x : x[1], reverse = True)
result = 0
for m, p in valueInfo:
if w - m >= 0:
w -= m
result += (m*p)
else: # 잘라서 넣어줘야함.
result += (w*p)
break
print(result)
'알고리즘 > Softeer' 카테고리의 다른 글
[Softeer][level2][21년 재직자 대회 예선] 비밀 메뉴 - 파이썬(Python) (0) | 2023.01.30 |
---|---|
[Softeer][level2][21년 재직자 대회 예선] 전광판 - 파이썬(Python) (0) | 2023.01.28 |
[Softeer][level2] 바이러스 - 파이썬(Python) (0) | 2023.01.27 |
[Softeer][level2] 장애물 인식 프로그램 - 파이썬(Python) (0) | 2023.01.27 |
[Softeer][level2] 지도 자동 구축 - 파이썬(Python) (0) | 2023.01.27 |