728x90
https://school.programmers.co.kr/learn/courses/30/lessons/172927
나의 풀이
피로도
- 곡괭이로 광물을 캘 때 피로도가 가장 작을 때를 반환해야 함
- 사용할 수 있는 곡괭이 중 아무거나 하나를 선택해서 사용함
- 한 번 사용한 곡괭이는 5번을 다 캐야지 바꿀 수 있음
- 광물은 주어진 순서대로만 캐야 함
- 광물을 다 캐거나 곡괭이를 다 소모할 때까지 광물을 캐야 함
- minerals를 minerals[:(sum(picks))*5]로 줄여 곡괭이의 수만큼 광물을 캘 수 있게 한다.
- minerals을 5씩 나눠 diamond, iron, stone의 개수만큼 list에 넣는다.
- diamond, iron 순으로 정렬한다.
다음과 같이 정리하고 곡괭이 다이아 -> 철 -> 돌 순으로 피로도를 구하면 이것이 최소가 된다.
def solution(picks, minerals):
answer = 0
minerals_cnt = []
minerals = minerals[:(sum(picks))*5]
for i in range(len(minerals)//5+1):
dia, iron, stone = minerals[i*5:i*5+5].count('diamond'),minerals[i*5:i*5+5].count('iron'),minerals[i*5:i*5+5].count('stone')
minerals_cnt.append([dia, iron, stone])
minerals_cnt.sort(key=lambda x:(x[0],x[1]), reverse= True)
for i, p in enumerate(picks):
for j in range(p):
mi = minerals_cnt.pop(0)
if i == 0:
answer += mi[0]
answer += mi[1]
answer += mi[2]
elif i == 1:
answer += mi[0]*5
answer += mi[1]
answer += mi[2]
elif i == 2:
answer += mi[0]*25
answer += mi[1]*5
answer += mi[2]
if minerals_cnt == []:
return answer
return answer
728x90
'Coding Test > programmers' 카테고리의 다른 글
[SQL] MySQL프로그래머스 역순 정렬하기 (0) | 2023.04.19 |
---|---|
[Python] 파이썬 프로그래머스 타겟 넘버 (0) | 2023.04.12 |
[Python] 파이썬 프로그래머스 과제 진행하기 (0) | 2023.03.31 |
[Python] 파이썬 프로그래머스 주식가격 (1) | 2023.03.31 |
[Python] 파이썬 프로그래머스 다리를 지나는 트럭 (0) | 2023.03.31 |