소스 코드

T = int(input())

for tc in range(1,1+T):
    n = int(input())

    cost = list(map(int,input().split()))

    # 비싼 순으로 정렬
    cost.sort(reverse=True)

    res = 0

    for q in range(0,n,3):
        
        # 만약 q > n-1 이면, q+1을 했을 때 index err 발생 가능 
        if q < n-2:
            
            # q+2 값은 할인해서 공짜
            res += cost[q]+cost[q+1]

    # 3벌로 묶이지 못한 옷들 처리
    for w in range(n%3):
        res += cost[-w-1]

    print('#{} {}'.format(tc,res))

 


해결 방법

1. 비싼 순서대로 묶으면, 가능한 가장 비싼 옷을 공짜로 얻을 수 있음

ex) 5 5 4 4 5 5가 있는 경우, 5+4원을 할인받기 위해서는 5끼리 묶어서 5를 최소로 만들어야 함


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.