문제
https://www.acmicpc.net/problem/20300
풀이
가장 큰 값과 가장 작은 값을 취하면 되는 그리디 문제이다.
- 정렬한다
- 최대 근손실을 홀수면 가장 큰수를 pop해서 초기화하고 짝수면 0으로 초기화한다
- 남은 수중 가장 큰 값, 가장 작은 값을 을 pop해서 더한 값이 최대 근손실보다 크면 교체한다
- 남은 수가 없어질 때까지 3번을 반복한뒤 최대 근손실을 출력한다
- 참 쉽죠?
정답 코드
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)
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Python] 11726번. 2×n 타일링 (0) | 2024.11.20 |
---|---|
[백준/Python] 21314번. 민겸 수 (0) | 2024.11.17 |
[백준/Python] 1027번. 고층 건물 (0) | 2024.11.17 |
[백준/Python] 9935번. 문자열 폭발 (0) | 2024.11.15 |
[백준/Python] 1213번. 팰린드롬 만들기 (0) | 2024.11.15 |