☑ Softeer 금고털이(level2)
2차원 배열 내림차순 정렬 data.sort(key = lambda x: x[1], reverse=True) #[[70, 5], [120, 3], [20, 1]]
import sys
input = sys.stdin.readline
# 귀금속 무게weight, 1 무게당 가격 price
# 최대 max_weight
# 가장 최대 가격으로 채우기
# 자를 수 있음. -> 무게당 가격 * 잘려진 무게
max_price = 0
weight, n = map(int, input().split()) # 최대무게, 귀금속 종류
#[[무게, 무게당 가격], ..]
data = [list(map(int, input().split())) for _ in range(n)] #[[90, 1], [70, 2]]
#무조건 무게당 가격이 높은 원소별로 소진시킴 -> 얘네들을 잘라서 넣으면되니까
#각원소의 1번 인덱스(무게당 가격) 기준으로 내림차순 sort
data.sort(key = lambda x: x[1], reverse=True) #[[70, 5], [120, 3], [20, 1]]
for i in data:
if weight > i[0]: #필요한 무게 > 금속 무게보다 클 경우
max_price += i[0] * i[1]
weight -= i[0]
else: #필요한 무게 < 금속 무게보다 적을 경우
max_price += weight * i[1]
break
print(max_price)
위 코드에서 수정할 사항!
- 2차원 배열의 원소를 돌 때 변수 2개에 할당 가능 for a, b in c
수정 전 코드
for i in data:
if weight >= i[0]: #필요한 무게 > 금속 무게보다 클 경우
max_price += i[0] * i[1]
weight -= i[0]
else: #필요한 무게 < 금속 무게보다 적을 경우
max_price += weight * i[1]
break
→ 수정사항 : 2차원 배열의 원소를 돌 때 변수 2개에 할당 가능 for a, b in c (GOOD)
이렇게하면 인덱스로 원소 접근안해도됨!
수정 후 코드 GOOD
for w, p in data:
if weight > w:
max_price += w * p
weight == w
else:
max_price += weight * p
break'개발 > Algorithm' 카테고리의 다른 글
| [백준/11724번/실버2]연결 요소의 개수 - 그래프 개념, DFS 사용! (4) | 2023.08.06 |
|---|---|
| [백준/1260번/실버 3] DFS와 BFS - 가장 기본적인 함수 (0) | 2023.08.05 |
| [백준/2559번/실버 3] 수열 - 누적합 스킬 (0) | 2023.08.04 |
| [백준/11660번/실버 1] 구간 합 구하기 5 - 다이나믹 프로그래밍, 누적 합 (0) | 2023.08.03 |
| 2023/8 알고리즘 공부 (0) | 2023.08.02 |