[백준/Python] 20300번. 서강근육맨

문제

https://www.acmicpc.net/problem/20300

 

 

 

풀이

가장 큰 값과 가장 작은 값을 취하면 되는 그리디 문제이다.

  1. 정렬한다
  2. 최대 근손실을 홀수면 가장 큰수를 pop해서 초기화하고 짝수면 0으로 초기화한다
  3. 남은 수중 가장 큰 값, 가장 작은 값을 을 pop해서 더한 값이 최대 근손실보다 크면 교체한다
  4. 남은 수가 없어질 때까지 3번을 반복한뒤 최대 근손실을 출력한다
  5. 참 쉽죠?

 

 

정답 코드

from collections import deque

N = int(input())
M = list(map(int, input().split()))
M.sort()
M = deque(M)

maxM = 0
if len(M) % 2 != 0:
    maxM = M.pop()

while len(M) > 0:
    m = M.popleft() + M.pop()
    if m > maxM:
        maxM = m

print(maxM)