관리 메뉴

진취적 삶

[코드 트리] 개발팀의 능력 / 완전 탐색 본문

알고리즘

[코드 트리] 개발팀의 능력 / 완전 탐색

hp0724 2024. 8. 26. 15:49

문제 링크: https://www.codetree.ai/missions/5/problems/the-capabilities-of-the-development-team?&utm_source=clipboard&utm_medium=text

 

 

코드

# 최대 능력의 팀과 최소 능력의 팀간의 능력 차이중 가능한 최솟값 
arr = list(map(int,input().split()))

def sum_diff(i,j,k,l):

    sum1 = arr[i] + arr[j]
    sum2 = arr[k] + arr[l]
    sum3 = sum(arr) -sum1 -sum2

    if (sum1!= sum2 and sum1!=sum3 and sum2!=sum3):
        return max(sum1,sum2,sum3) - min(sum1,sum2,sum3)
    return 1e6

min_diff = 1e6 

for i in range(len(arr)):
    for j in range(len(arr)):
        for k in range(len(arr)):
            for l in range(len(arr)):
                if i!=j and i!=k and i!=l and j!=k and j!=l and k!=l: 
                    min_diff = min(min_diff,sum_diff(i,j,k,l))


if min_diff == 1e6:
    print(-1)
else:
    print(min_diff)

 

코드 설명

1. 2 명 2명 1명으로 나누기 위해서 4중 for 문을 사용한다.
2. 나머지 1명의 경우 자연스럽게 전체 합에서 뺀 경우 구할수 있음 
3. 그룹의 sum 값들이 달라야 하니깐 조건문 통해서 진행해준다. 
4. 만약 그룹의 값들이 전부 다른 경우가 없는경우 return 1e6 을 해준다.