소스 코드
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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] 세제곱근을 찾아라 - PYTHON #5688 (0) | 2021.03.18 |
---|---|
[SWEA 코딩] 주기 찾기 - PYTHON #11316 (0) | 2021.03.17 |
[SWEA 코딩] 가능한 시험 점수 - PYTHON #3752 (0) | 2021.03.16 |
[SWEA 코딩] 창용 마을 무리의 개수 - PYTHON #7465 (0) | 2021.03.15 |
[SWEA 코딩] 몬스터 사냥 - PYTHON #11387 (0) | 2021.03.14 |