문제
코드
My answer
import sys
input=sys.stdin.readline
n=int(input())
loss=list(map(int,input().split()))
tmp=[]
loss.sort()
if(n%2==1):
tmp.append(loss[-1])
loss=loss[:-1]
for i in range(len(loss)//2):
tmp.append(loss[i]+loss[len(loss)-1-i])
print(max(tmp))
Another answer
input()
a = [int(i) for i in input().split()]
a.sort()
m = 0
if len(a)%2 == 1:
m = a.pop(-1)
b = [a[i] + a[-i-1] for i in range(len(a)//2)]
b.append(m)
print(max(b))
풀이
생각을 간단하게 했다. 두개씩을 더해서 나오는 결과들중 최소를 찾기위해서는 가장 작은 것과 큰것을 더하면 된다고 생각했고 그럼 그리디로 문제를 풀면됐다. 이때 n이 홀수일때는 제일 큰 값을 혼자 만들면되기 때문에 홀수일경우는 우선 제일 큰것을 tmp리스트에 넣어놓고 나머지 숫자들을 가장 큰값고 작은값을 더하면서 결과값을 tmp리스트에 넣는다. 그러면 1,2,3,4,5라고 했을땐, 우선 5가 tmp에 들어가고 그다음 1+4=5가들어가고 2+3=5가 들어간다. 이tmp에서 max값을 찾으면 되는데 모든날의 최솟값을 찾는것이기 떄문에 모두 만족하려면 max값을 찾아야한다. !
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #1541- 잃어버린 괄호 (0) | 2023.09.01 |
---|---|
[Python] 백준 #19941 - 햄버거 분배 (0) | 2023.08.24 |
[Python] 백준 #20115 - 에너지 드링크 (0) | 2023.08.24 |
[Python] 백준 #11508- 2+1 세일 (0) | 2023.08.23 |
[Python] 백준 #1758- 알바생 강호 (0) | 2023.08.23 |