https://school.programmers.co.kr/learn/courses/30/lessons/172927
def list_div(lst,n):
return [lst[i:i+n] for i in range(0,len(lst),n)]
def solution(picks, minerals):
answer = 0
sum_gok = sum(picks)
if len(minerals) > sum_gok * 5:
minerals = minerals[:sum_gok*5]
min_5 = list_div(minerals,5)
mine_list = []
print(min_5)
for i in min_5:
sum_ = 0
for j in i:
if j=='stone':
sum_ += 1
elif j=='iron':
sum_ += 5
else:
sum_ +=25
mine_list.append([i,sum_])
mine_list.sort(key=lambda x:(-x[1]))
print(mine_list)
dia,ir,st = picks
while dia > 0:
if mine_list:
elem = mine_list.pop(0)
for i in elem[0]:
answer +=1
dia -=1
while ir > 0:
if mine_list:
elem = mine_list.pop(0)
for i in elem[0]:
if i == 'diamond':
answer += 5
else:
answer +=1
ir -= 1
while st > 0:
if mine_list:
elem = mine_list.pop(0)
for i in elem[0]:
if i == 'diamond':
answer += 25
elif i == 'iron':
answer +=5
else:
answer +=1
st -= 1
print(answer)
return answer
picks = [1,1,0]
minerals = ["iron", "iron", "diamond", "iron", "stone", "diamond", "diamond", "diamond"]
solution(picks,minerals)
자원을 곡괭이의 갯수만큼 자른다.
자원을 5 단위로 나눈다.
한 단위의 자원을 돌곡괭이 기준으로 총량을 구한다.
단위 자원의 총량을 내림차순으로 정렬한다.
앞에서부터 다이아, 철, 돌 곡괭이 순으로 캔다.
문제를 풀면서 처음 배운건데 리스트 슬라이싱은 인덱스를 초과해도 오류가 발생하지 않는다.
A = [1,2,3]
B = A[0:5]
print(B) # [1,2,3]