20300 서강근육맨
업데이트:
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로 지정하고 위 방식과 그대로 진행하면 된다.
나의 생각
사실 이 문제 읽을 때 무슨 얘기를 하는건지 이해가 안갔다.. 오늘 컨디션이 안좋은지 다 그러네..