티스토리 뷰

알고리즘 공부/백준

백준 1744번

_Yunhwan 2022. 10. 29. 22:23

https://www.acmicpc.net/problem/1744

 

1744번: 수 묶기

길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에

www.acmicpc.net

n =int(input())


arr = [int(input()) for i in range(n)]

plus = []
minus = []

result1 = 0
result2 = 0


for i in range(n):
  if arr[i]>0:
    plus.append(arr[i])
  else:
    minus.append(arr[i])

plus.sort(reverse=True)
minus.sort()


for i in range(0,len(plus),2):
  #묶고 남은 수 일 때
  if i+1 == len(plus):
    result1 += plus[i]

  #묶이는 수 중에 1이 있을 때
  elif plus[i+1] ==1:
    result1 +=(plus[i]+1)

  # 그 외 묶일 때는 두수의 곱 더하기
  else:
    result1 += (plus[i]*plus[i+1])
  


for i in range(0,len(minus),2):
  #묶고 남은 수 일 때
  if i+1 == len(minus):
    result2 += minus[i]
  #그 외 묶일 때는 두수의 곱 더하기
  else:
    result2 += (minus[i] * minus[i+1])

print(result1 + result2)

'알고리즘 공부 > 백준' 카테고리의 다른 글

백준 1541번  (0) 2022.10.29
백준 1931번  (0) 2022.10.29
백준 2293번  (0) 2022.10.29
백준 1038번  (1) 2022.10.29
백준 1016번  (0) 2022.10.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함