def my_sum(idx,res,cnt): # 위치, 합, 몇 번 더했는지
    
    # 탈출조건, 3번 더했으면
    if cnt == 3:
        
        # num_save 안에 중복된 숫자 없으면
        if res not in num_save:
            num_save.append(res)
        return

    for w in range(idx,7):
        my_sum(w+1,res+numbers[w],cnt+1)
    return

T = int(input())

for tc in range(1,1+T):
    
    # 7개의 숫자
    numbers = list(map(int,input().split()))

    # 저장소
    num_save = []

    # 하나씩 보내기
    # 6번째 숫자에서 시작하면 3번 더할 수 없음
    for q in range(5):
        my_sum(q+1,numbers[q],1)

    num_save.sort(reverse=True)

    print('#{} {}'.format(tc,num_save[4]))

그 외

문제풀이를 위한 아이디어

 

1. 하드코딩(?) 형태로 접근하면 해결할 수 없다

 

초기 접근 방식)

numbers를 정렬한 후, [0] + [5] + [6]의 값을 구하는 방식

그러나 해당 문제는 나올 수 있는 값들 중 5번째로 큰 값을 구하는 것

 

반례)

2번째 tc에서 3번째로 큰 값을 구할 때,

내 방식으로 문제를 이해하면, 99 + 77 + 6 = 182가 나온다

그러나 실제 3번째로 큰 값은 99 + 76 + 24 = 199이다.

 

 

 

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

 

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

 

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