두 수의 곱에서 가장 큰 값이 나오려면
가장 큰 수들을 곱하는게 제일 큰 곱이 나온다.
ex) 1~16일때 16*15 가 가장 큰 곱
그러므로 내림차순 정렬한 다음 큰 수보다
다만 예외로, 음수는
1은 그냥 더하는게 이득이다
N = int(input())
pos = [] # 양수저장
neg = [] # 음수저장
result = 0
for _ in range(N):
n = int(input())
if n > 1:
pos.append(n)
elif n == 1:
result += 1 # 1은 그냥 더해준다
else:
neg.append(n)
pos.sort(reverse=True)
neg.sort()
# 양수
if len(pos) % 2 == 0: # 양수가 짝수개 일경우 두개씩 곱하기
for i in range(0, len(pos), 2):
result += pos[i] * pos[i+1]
else:
for i in range(0, len(pos)-1, 2):
result += pos[i] * pos[i+1]
result += pos[len(pos)-1] # 마지막 수는 그냥 더함
# 음수
if len(neg) % 2 == 0: # 음수가 짝수개 일경우 두개씩 곱하기
for i in range(0, len(neg), 2):
result += neg[i] * neg[i+1]
else:
for i in range(0, len(neg)-1, 2):
result += neg[i] * neg[i+1]
result += neg[len(neg)-1] # 마지막 수는 그냥 더함
print(result)
오예