본문 바로가기

공부하는 것들/알고리즘

백준 20300번: 서강근육맨(그리디)

문제 요약: 서강헬스클럽은 PT 한번당 운동기구 두개만 사용 가능. 겹치지 않게 모두 한번씩 사용(홀수인 경우, 마지막 PT에서는 하나의 기구만)

운동기구마다 근손실 정도가 다르고, 근손실의 최솟값(M)을 구하라.

INPUT : 운동기구의 갯수// 운동기구의 근손실을 나타내는 정수

OUTPUT: M의 최솟값

이전 문제(Project Teams) 와 다른 것은,  이전은 MIN이 MAX가 되도록 구하는 것이었는데,

이번 문제는, MAX가 MIN이 되도록 구하는 것이라는 점이다.

 

def solve(N, items):
    items = sorted(items)
    groups = []
    if N%2==1:
        groups=[[items[i],items[N-2-i]] for i in range(N//2)]+[[items[-1]]]
    else: groups=[[items[i], items[N-1-i]] for i in range(N)]
    groups = [sum(x) for x in groups]
    return max(groups)

if __name__=='__main__':
    N = int(input())
    items = list(map(int,input().split()))
    print(solve(N, items))