백준 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)