[골드4] 1744번 : 수 묶기

Quesuemon·2022년 2월 13일
0

코딩테스트 준비

목록 보기
100/111

🛠 문제

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


👩🏻‍💻 해결 방법

최댓값이 나올 수 있는 수 묶기의 규칙을 적용해서 풀 수 있는 문제다
0 + 양수
0 x 음수
1 + 양수
1 + 음수
양수 x 양수
음수 x 음수
양수 + 음수
입력받은 양수와 음수는 각각 리스트에 저장해주고, 리스트의 길이가 짝수일 경우와 홀수일 경우를 나눠서 계산해준다

소스 코드

import sys
input = sys.stdin.readline

n = int(input())
positive = []
negative = []
answer = 0

for _ in range(n):
  num = int(input())

  if num > 1:
    positive.append(num)
  elif num == 1:
    answer += 1  #1이면 양수,음수 모두 더해줄 경우 최댓값
  else:
    negative.append(num)

positive.sort(reverse=True)
negative.sort()

if len(positive) % 2 == 0:
  for i in range(0, len(positive), 2):
    answer += positive[i] * positive[i+1]
else:
  for i in range(0, len(positive)-1, 2):
    answer += positive[i] * positive[i+1]
  answer += positive[len(positive)-1]

if len(negative) % 2 == 0:
  for i in range(0, len(negative), 2):
    answer += negative[i] * negative[i+1]
else:
  for i in range(0, len(negative)-1, 2):
    answer += negative[i] * negative[i+1]
  answer += negative[len(negative)-1]

print(answer)

0개의 댓글