728x90
https://www.acmicpc.net/problem/1350
1350번: 진짜 공간
첫째 줄에 파일의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌
www.acmicpc.net
[풀이]
조건별로 필요할 클러스터 개수 구한 후 클러스터 사이즈와 곱해주면 된다.
우선 파일 크기가 클러스터 크기보다 큰 경우의 계산을 수행하기 위해 math 모듈 import 해준다.
이 문제의 핵심은 파일 크기가 클러스터 크기보다 큰 경우 클러스터 몇개가 필요한지 계산하는 것이다.
클러스터는 공유가 불가하다 했으므로 1이라도 넘치게 되면 클러스터 크기가 얼마가 되었던간에 하나를 더 써야한다.
그래서 파일 사이즈 / 클러스터 사이즈 의 몫을 올림 처리하여 필요한 클러스터 개수를 구해야 한다.
이때 이용하는 것이 math 모듈의 ceil() 메서드이다.
최종적으로 필요한 클러스터 개수를 구했으면, 구한 개수와 사전에 입력해 준 클러스터 사이즈를 곱해주면 된다.
import math # ceil() 올림 함수 쓰기 위해 math 모듈 import
N = int(input())
fileSize = list(map(int, input().split())) # 파일 크기
clusterSize = int(input()) # 클러스터 크기
cnt = 0 # 클러스터 몇개 필요할 지 넣어주는 변수
tmp = 0
for i in range(len(fileSize)):
if fileSize[i] <= clusterSize:
if fileSize[i] == 0: # 파일 크기가 0인 경우 클러스터 필요 없음
cnt += 0
else: cnt += 1 # 파일 크기가 클러스터 크기보다 작으면 1개만 필요
elif fileSize[i] > clusterSize:
tmp = math.ceil(fileSize[i]/clusterSize) # 파일 크기가 넘친다면 그만큼의 클러스터가 추가로 필요 이때 클러스터는 공유가 안되므로 나눈 몫을 올림처리
cnt += tmp
tmp = 0
print(cnt*clusterSize)
728x90
'Programming Languages > Python' 카테고리의 다른 글
[백준/python] 14724번 관리자는 누구? (0) | 2022.09.25 |
---|---|
[백준/python] 10867번 중복 빼고 정렬하기 (1) | 2022.09.25 |
[ 백준/python] 14910번 오르막 (0) | 2022.09.18 |
[백준/python] 2511번 카드놀이 (0) | 2022.09.18 |
[백준/python] 19698번 헛간 청약 (0) | 2022.09.17 |