17245 서버실

정민용·2023년 2월 11일
0

백준

목록 보기
41/286

문제

서버실은 여러 대의 서버 컴퓨터들을 안정적으로 운영할 수 있는 환경을 유지하기 위해 설치된 공간을 말한다.

이 회사의 서버실은 N×N 칸으로 구분되어 있고, 각 칸마다 서버 랙이 있어 컴퓨터를 여러 대 쌓을 수 있다. 서버가 과열되지 않도록 서버실에는 언제나 냉방기가 작동하고 있다. 그런데 회사가 경제적으로 어려움에 처한 나머지, 서버실의 운영 비용을 줄이기 위해 서버실 내의 컴퓨터 중 절반만 정상적으로 관리하기로 하였다.

냉방기에서 나온 차가운 공기는 서버실의 아래쪽부터 서서히 차오른다. 1분마다 컴퓨터 한 대의 높이만큼 방을 채운다. 이 회사의 서버 컴퓨터는 환경에 매우 민감하여 차가운 공기를 받아야만 동작하고 그렇지 못하면 장애를 일으킨다.

서버실의 컴퓨터 중 절반 이상이 켜지려면 몇 분이 필요할까?

import sys

input = lambda: sys.stdin.readline().strip()

n = int(input())
arr = []
for _ in range(n):
  arr.append(list(map(int, input().split())))
global computers
computers = sum(sum(a) for a in arr) + 1


def binary_search(arr, start, end):
  global computers
  time = 0
  while start <= end:
    mid = (start + end) // 2
    cnt = 0
    for com in arr:
      for c in com:
        cnt += min(c, mid)
    if cnt >= (computers // 2):
      time = mid
      end = mid - 1
    else:
      start = mid + 1
  return time


end = 0
for array in arr:
  for a in array:
    end = max(a, end)
print(binary_search(arr, 1, end))
  • 컴퓨터의 개수가 홀수일 경우 컴퓨터의 절반이 동작해도 50%보다 적게 동작한다.

백준 17245 서버실

0개의 댓글