업데이트:

카테고리: ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

"""
되도록 pt 한번에 기구 2개 사용
그리고 다 한번씩만 사용할 것임

pt 한번 받을 때의 근손실 정도가 M을 넘지 않도록 하고 싶다.
M의 최소값은?

근손실 정도는 t의 합임.

"""
import sys
input = sys.stdin.readline
N = int(input())
loss_list = list(map(int,input().split()))
loss_list.sort()
# 운동기구가 홀수개이면 제일 무거운 것을 마지막 날에 들면 되고 이게 최대가 될듯
if len(loss_list) % 2 == 1 :
    temp = len(loss_list)//2
    i = 0
    max_val = loss_list[-1]
    while i != temp :
        max_val = max(max_val,loss_list[i]+loss_list[-2-i])
        i+=1
    print(max_val)

# 운동기구가 짝수개이면, 제일 가벼운 것과 제일 무거운걸 드는 날이 가장 최대가 될듯
else :
    temp = len(loss_list)//2
    i = 0
    max_val = 0
    while i != temp+1 :
        max_val = max(max_val,loss_list[i]+loss_list[-1-i])
        i+=1
    print(max_val)




3. 풀이 및 생각


문제 풀이

이 문제는 2가지 경우로 나눠서 풀면 된다. 주어지는 t의 set이 홀수면 제일 큰 값을 max로 지정하고 나머지 값들을 좌우 끝 값부터 안쪽으로 하나씩 카운팅 하면서 더해준 후, 값들을 max와 비교하면 된다.

t의 set이 짝수면 0을 max로 지정하고 위 방식과 그대로 진행하면 된다.


나의 생각

사실 이 문제 읽을 때 무슨 얘기를 하는건지 이해가 안갔다.. 오늘 컨디션이 안좋은지 다 그러네..

최대 1 분 소요