Published:
Updated:

  • 양수, 음수, 숫자 1을 기준으로 생각하면 됨


Solution

import sys
from typing import List


def solution(nums: List[int]) -> int:
    plus, minus, one = [], [], []

    for num in nums:
        if num > 1:
            plus.append(num)
            continue

        # 당연히 음수에 0이 포함돼야지 더 커짐
        if num <= 0:
            minus.append(num)
            continue

        # 양수, 음수 모두 더하는 게 더 커짐
        # if num == 1:
        one.append(num)

    plus.sort(reverse=True)
    minus.sort()

    answer = sum(one)

    # 양수, 음수 각각 계산
    for i in range(0, len(plus), 2):
        if i == len(plus) - 1:
            answer += plus[i]
            break

        answer += plus[i] * plus[i + 1]

    for i in range(0, len(minus), 2):
        if i == len(minus) - 1:
            answer += minus[i]
            break

        answer += minus[i] * minus[i + 1]

    return answer


N = int(sys.stdin.readline().rstrip())
nums = []
for _ in range(N):
    nums.append(int(sys.stdin.readline().rstrip()))

print(solution(nums))


Reference

Leave a comment