반응형
https://www.acmicpc.net/problem/1744
1744번: 수 묶기
길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에
www.acmicpc.net
n = int(input())
negative = []
zero = []
positive = []
for i in range(n):
num = int(input())
if num > 0:
positive.append(num)
elif num < 0:
negative.append(num)
else:
zero.append(num)
negative.sort()
positive.sort(reverse=True)
neg_sum =0
if len(negative)>1:
for i in range(0,len(negative)-1, 2):
neg_sum += negative[i] * negative[i + 1]
if not zero and len(negative)%2==1:
neg_sum += negative[-1]
pos_sum = 0
if len(positive)>1:
for i in range(0,len(positive)-1,2):
a = positive[i]
b = positive[i+1]
pos_sum += max(a+b,a*b)
if len(positive) % 2 == 1:
pos_sum += positive[-1]
print(neg_sum+pos_sum)
초반 오류 간과했던 점
- 1과 a는 더하는게 곱하는 거보다 크다.
이것만 조심하면 풀만한 문제였다!!
댓글