본문 바로가기
Problem Solving/Sorting

[정렬 문제] 백준 1744번: 수 묶기

by ggyongi 2021. 5. 28.
반응형

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는 더하는게 곱하는 거보다 크다.

 

이것만 조심하면 풀만한 문제였다!!

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글