프로그래머스/LV2

[프로그래머스 Lv2,python] - 광물 캐기

chyam_eun 2025. 3. 28. 10:58

https://school.programmers.co.kr/learn/courses/30/lessons/172927

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

def solution(picks, minerals):
    res = 0
    d_p = {'diamond' : 1, 'iron' : 1, 'stone' : 1}
    i_p = {'diamond' : 5, 'iron' : 1, 'stone' : 1}
    s_p = {'diamond' : 25, 'iron' : 5, 'stone' : 1}
    
    total_picks = sum(picks)
    # 광물 그룹화
    minerals_group = []
    for idx in range(0,len(minerals),5):
        minerals_group.append(minerals[idx:idx+5])
        if len(minerals_group) == total_picks: # 곡괭이의 수만큼 있다면 멈추기
            break
    
    # 피로도 높은 순서대로 그룹 정렬하기 
    def group_sort(group):
        su = 0
        for m in group:
            su += s_p[m] # stone으로 캤을때 피로도
        return su
    
    minerals_group.sort(key = group_sort, reverse= True)
    
    # 광물 캐기
    for i in minerals_group:
        if picks[0] > 0:
            picks[0] -= 1
            for m in i:
                res += d_p[m]
        elif picks[1] > 0:
            picks[1] -= 1
            for m in i:
                res += i_p[m]
        elif picks[2] > 0:
            picks[2] -= 1
            for m in i:
                res += s_p[m]

    return res