[BOJ] 백준 1744 수 묶기

태환·2024년 2월 25일
0

Coding Test

목록 보기
82/151

📌 [BOJ] 백준 1744 수 묶기

📖 문제

📖 예제

📖 풀이

import sys
input = sys.stdin.readline

N = int(input())
pos = []
neg = []
ans = 0
for _ in range(N):
  a = int(input())
  if a == 1:
    ans += 1
  elif a > 0:
    pos.append(a)
  else:
    neg.append(a)

pos.sort()
neg.sort(reverse=True)

while pos:
  if len(pos) == 1:
    ans += pos.pop()
  else:
    ans += pos.pop() * pos.pop()

while neg:
  if len(neg) == 1:
    ans += neg.pop()
  else:
    ans += neg.pop() * neg.pop()

print(ans)

다음 3가지 상황을 고려해야한다.
1. 입력 값이 1인 경우 ans에 그냥 더해준다.
2. 입력 값이 양수인 경우 pos에 모아 sort 후 뒤에서부터 두개씩 뽑아서 곱한 값을 ans에 더해주는 수행을 pos에 1개 요소만 남을 때 까지 한 후 나머지 하나는 그냥 더해준다.
3. 입력 값이 음수인 경우 neg에 모아 내림차순으로 sort 후 뒤에서부터 두개씩 뽑아서 곱한 값을 ans에 더해주는 수행을 neg에 1개 요소만 남을 때 까지 한 후 나머지 하나는 그냥 더해준다.

profile
연세대학교 컴퓨터과학과 석사 과정

0개의 댓글