웹찢남

[백준 1744 수 묶기 문제] PYTHON 본문

백준 Algorithm

[백준 1744 수 묶기 문제] PYTHON

harry595 2021. 9. 10. 15:36

 

그리디 알고리즘 문제다.

단순한 문제인데 골드로 평가된 이유는 hidden case 가 좀 있다.

신경써야 할 사항은 1. 음수와 음수의 곱 2. 음수와 0의 곱 3. 1의 존재이다.

이걸 생각하며 코드를 짜면 아래처럼 나온다.

 

from sys import stdin
input = stdin.readline

t = int(input())
minus = 0
oneval = 0
gd = []
for _ in range(t):
    tmp = int(input())
    if tmp <= 0:
        minus += 1
    elif tmp == 1:
        oneval += 1
    gd.append(tmp)

gd.sort()
minusgd = gd[:minus]
plusgd = gd[minus+oneval:][::-1]
answer = 0

for a, i in enumerate(minusgd[::2]):
    try:
        answer += i*minusgd[2*a+1]
    except:
        answer += i

for a, i in enumerate(plusgd[::2]):
    try:
        answer += i*plusgd[2*a+1]
    except:
        answer += i

print(answer+oneval)
Comments