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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] 신뢰 - PYTHON #10761 (0) | 2021.01.12 |
---|---|
[SWEA 코딩] 민석이의 과제 체크하기 - PYTHON #5431 (0) | 2021.01.11 |
[SWEA 코딩] 현주의 상자 바꾸기 - PYTHON #5789 (0) | 2021.01.11 |
[SWEA 코딩] 세상의 모든 팰린드롬 - PYTHON #4522 (0) | 2021.01.10 |
[SWEA 코딩] Digit sum - PYTHON #3750 (0) | 2021.01.10 |