Algorithm/백준

백준 20300번(Python) : 서강근육맨

skyey94 2021. 3. 15. 23:10

www.acmicpc.net/problem/20300

 

20300번: 서강근육맨

PT 첫째 날에 $1$과 $4$를 선택하고, 둘째 날에 $2$와 $3$을 선택하고, 마지막 날에 $5$를 선택하면 $M$은 $5$가 되며, 이때가 $M$이 최소일 때이다.

www.acmicpc.net


[풀이]

 

 하루에 두개의 운동기구를 이용해야하며 마지막 날은 1개이든 2개이든 남은 것을 수행하면 된다. 하루의 근손실 정도 M이 최소가 되어야 하므로 양 끝에 있는 것을 선택하여 더하여 값을 비교하도록 하였다. 비교 이후에는 리스트에서 값을 제거하여 리스트에 계산이 안된 값만 남도록 하게했다. 마지막 날의 운동 기구 개수에 따라 2가지 경우로 나눠서 풀었는데.. 솔직히 좋은 코드라고 할 정도는 아니라고 생각한다. 코드 길이도 길고, 뭔가 굳이 이걸..? 이런 느낌이긴 한데 추후에 다시 한번 풀어봐야겠다!

 


[코드]

 

import sys
input = sys.stdin.readline

n = int(input())
arr = list(map(int,input().split()))
sum = 0
minValue = -1
arr.sort()
if len(arr) % 2 == 0:
    while arr:
        sum = arr[0] + arr[-1]
        arr.pop(0)
        arr.pop(-1)
        if minValue < sum:
            minValue = sum
else:
    minValue = arr[-1]
    arr.pop()
    while arr:
        sum = arr[0] + arr[-1]
        arr.pop(0)
        arr.pop(-1)
        if minValue < sum:
            minValue = sum

print(minValue)