최댓값이 나올 수 있는 수 묶기의 규칙을 적용해서 풀 수 있는 문제다
0 + 양수
0 x 음수
1 + 양수
1 + 음수
양수 x 양수
음수 x 음수
양수 + 음수
입력받은 양수와 음수는 각각 리스트에 저장해주고, 리스트의 길이가 짝수일 경우와 홀수일 경우를 나눠서 계산해준다
소스 코드
import sys
input = sys.stdin.readline
n = int(input())
positive = []
negative = []
answer = 0
for _ in range(n):
num = int(input())
if num > 1:
positive.append(num)
elif num == 1:
answer += 1 #1이면 양수,음수 모두 더해줄 경우 최댓값
else:
negative.append(num)
positive.sort(reverse=True)
negative.sort()
if len(positive) % 2 == 0:
for i in range(0, len(positive), 2):
answer += positive[i] * positive[i+1]
else:
for i in range(0, len(positive)-1, 2):
answer += positive[i] * positive[i+1]
answer += positive[len(positive)-1]
if len(negative) % 2 == 0:
for i in range(0, len(negative), 2):
answer += negative[i] * negative[i+1]
else:
for i in range(0, len(negative)-1, 2):
answer += negative[i] * negative[i+1]
answer += negative[len(negative)-1]
print(answer)