반응형
코드
import sys
n = int(input())
n_list = list(map(int,sys.stdin.readline().split()))
n_list.sort()
max = 0
if n%2 == 0:
for i in range(n//2):
num = n_list[i]+n_list[-1-i]
if num > max:
max = num
else:
for i in range(n//2):
num = n_list[i]+n_list[-2-i]
if num > max:
max = num
if max < n_list[-1]:
max = n_list[-1]
print(max)
설명
먼저 운동기구의 개수가 홀수인지 짝수인지 알아야 한다. 그리고 입력받은 수를 오름차순이나 내림차순으로 정렬한다.
홀수일 때는 운동기구 하나만 사용하는 날이 존재하는데 그때는 근손실이 가장 큰 운동기구를 사용해야 한다. 그리고 그것을 제외한 나머지 수들은 i번째와 (-2-i)번째끼리 더해서 max값과 비교해가면서 가장 큰 값을 찾는다.
짝수일때는 그냥 i번째와 (-1-i)번째끼리 더해서 비교해주면 된다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 1541번 잃어버린 괄호 (0) | 2022.04.05 |
---|---|
[백준][Python] 11047번 동전 0 (0) | 2022.04.01 |
[백준][Python] 20115번 에너지 드링크 (1) | 2022.03.30 |
[백준][Python] 11508번 2+1 세일 (0) | 2022.03.29 |
[백준][Python] 1758번 알바생 강호 (0) | 2022.03.28 |
댓글