SWEA (SW Expert Academy)/D3

[SWEA/D3] 5948 새샘이의 7-3-5 게임 / 백트래킹

hellosonic 2023. 5. 7. 23:47

문제 바로가기

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

나의 코드 및 설명

  • 백트래킹을 통해 문제를 풀이하였다.
  • 종료 조건에 도달하면, 함수의 temp_list 변수에 저장된 요소들의 합을 메인 함수의 result 리스트에 추가하고 리턴한다.
  • set()을 통해 중복을 제거하고 sort()를 통해 정렬함으로써 5번째로 큰 값을 찾아 출력했다.
def dfs(count, start, temp_list):
    if count == 3:
        result.append(sum(temp_list))
        return
    for i in range(start, 7):
        dfs(count+1, i+1, temp_list + [num_list[i]])

t = int(input())
for test_case in range(1,t+1):
    num_list = list(map(int, input().split()))
    result = []
    dfs(0,0,[])
    result.sort(reverse=True)
    ans_list = list(set(result))
    print("#{} {}".format(test_case, ans_list[4]))