728x90


리스트를 입력받아 내림차순으로 정리한 것과 오름차순으로 정리한 것의 각 요소들의 합중 최댓값이 답이다.

n이 짝수일때는 크게 문제가 되지 않는데 n이 홀수라면 생각을 좀 해야 한다.

 

내가 생각한 방법은 n이 홀수라면 운동기구를 하루만 사용하는 날 근손실이 최대로 일어나는 기구를 사용해야 한다.

이번 코드에는 zip이라는 함수를 처음으로 사용해보았다. 


n = int(input())
muscle_re = list(map(int,input().split()))

muscle_re.sort(reverse = True) # 내림차순으로 정리
muscle = sorted(muscle_re, reverse = False) # 오름차순으로 정리

if n%2 == 0: #n이 짝수일때
    result = 0
    day_muscle = 0
    for i,k in zip(muscle_re,muscle): #zip으로 묶어줘 요소들끼리 더한다
        day_muscle = i + k
        if result < day_muscle:
            result = day_muscle 
            
else:
    del muscle_re[0] #리스트의 첫번째 요소를 제거
    muscle_re.append(0) #리스트 마지막에 0을 추가
    result = 0
    day_muscle = 0
    for i,k in zip(muscle_re,muscle): #짝수일때와 같은 방법으로 풀어준다.
        day_muscle = i + k
        if result < day_muscle:
            result = day_muscle

print(result)

n이 홀수일때 푸는법

복사했습니다!