def f0(n):
if n > 0 and n != 1:
return True
return False
def f1(n):
if n < 0:
return True
return False
n = int(input())
l = [int(input()) for _ in range(n)]
zero = l.count(1)
mino = list(filter(f1,l))
plus = list(filter(f0,l))
mino.sort()
plus.sort(reverse=True)
ans = 0
if len(mino) % 2 == 0 :
for i in range(0,len(mino),2):
ans += mino[i] * mino[i+1]
else:
for i in range(0,len(mino)-1,2):
ans += mino[i] * mino[i+1]
if not 0 in l:
ans += mino[len(mino)-1]
if len(plus) % 2 == 0 :
if len(plus) == 2:
ans += max(plus[0]+plus[1],plus[0]*plus[1])
else:
for i in range(0,len(plus),2):
ans += plus[i] * plus[i+1]
else:
for i in range(0,len(plus)-1,2):
ans += plus[i] * plus[i+1]
ans += plus[len(plus)-1]
ans += zero
print(ans)
풀이 :
음수면 오름차순
양수면 내림차순
0이 존재하는지?
1이 존재 하는지?
조건 분기를 따져서 정렬하고 계산해주면 된다.
음수가 홀수 개 있으면 제일 작은 수만 남기고 모두 묶어주면 되고
음수가 홀수 개 있을 때 0이 존재하면 나머지도 0이랑 묶어서 0으로 만들어 주면 되고
양수가 홀수 개 있으면 제일 작은 수만 남기고 모두 묶어주면 되고
양수에서 1은 곱하는 것 보단 더하는게 무조건 이득이니 따로 빼서 계산 한다.
'ps' 카테고리의 다른 글
[백준] 2421 저금통 (0) | 2025.01.30 |
---|---|
[백준] 14500 테르로미노 (1) | 2024.06.09 |
백준 큰 수 만들기 (0) | 2024.01.14 |
[백준 2916] 도영이가 만든 맛있는 음식 [JS] (0) | 2024.01.11 |
[백준] 15656 N과 M (7) Node js 풀이 (0) | 2024.01.07 |