문제 설명 및 풀이
한번에 2개의 기구씩 쓸 수 있으며 각 기구의 근손실 정도가 주어집니다.
근손실 수치의 2개의 기구를 이용하는 경우 2개의 합,
1개의 기구를 이용하는 경우 해당 기구의 근손실 정도입니다.
최소 근손실 수치가 목적이기 때문에 짝수개의 기구가 주어지는 경우,
홀수개의 기구가 주어지는 경우를 구분합니다.
=> 오름차순으로 기구를 정렬합니다.
=> 가장 작은값과 가장 큰 값을 더해 가장 크게 나오는 수를 찾습니다.
=> 홀수면 기구가 하나 남기에 가장 큰 값 하나를 max로 먼저 잡고 시작합니다.
정답 예시 코드
import sys
input = sys.stdin.readline
n = int(input())
loss_list = list(map(int, input().split()))
# 기계가 홀수개인지 체크
odd = False
if len(loss_list) % 2 != 0:
odd = True
# 오름차순 정렬
loss_list.sort()
max_value = -1
left = 0
right = len(loss_list) - 1
# 홀수개인 경우 가장 큰 값 먼저 처리
if odd == True:
right -= 1
max_value = loss_list[len(loss_list) - 1]
# 가장 작은 값, 가장 큰 값 하나씩 더해주면서 가장 큰 근손실 찾기
while left < right:
max_value = max(max_value, loss_list[left] + loss_list[right])
left += 1
right -= 1
print(max_value)
'CodingTest > Content' 카테고리의 다른 글
백준 21314번 민겸 수 풀이 및 정답(python) (0) | 2025.03.30 |
---|---|
백준 1541번 잃어버린 괄호 풀이 및 정답(python) (1) | 2025.03.25 |
백준 11508번 2+1 세일 풀이 및 정답(python) (0) | 2025.03.24 |
백준 14916번 거스름돈 풀이 및 정답(python) (0) | 2025.03.23 |
백준 2798번 블랙잭 풀이 및 정답(python) (0) | 2025.02.08 |