# Coding/# 백준

[백준 / 1350] 진짜 공간 - Python

강현들 2021. 4. 2. 17:15
728x90
반응형

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

 

1350번: 진짜 공간

첫째 줄에 파일의 개수 N이 주어진다. N은 1,000보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아

www.acmicpc.net

<접근>

만약 file의 크기가 0이면 클러스터의 개수를 더하지 않고, file의 크기가 클러스터와 같거나 작다면 개수를 1 더해주고, 클러스터의 크기보다 크다면 file을 클러스터로 나눴을 때 나누어 떨어지는 경우 몫만큼 개수를 더해주고, 나머지가 있는 경우 몫을 더한 값에 1을 더 더해준다.

<입력>

input()

files = list(map(int, input().split()))

cluster = int(input())

 

파일의 개수를 입력 받는다.

파일의 크기를 입력 받아 files라는 리스트로 저장한다.

클러스터의 크기를 입력 받는다.

<계산 및 출력>

count = 0

for file in files:
    if file == 0:
        continue

    elif file > cluster:
        if file % cluster == 0:
            count += file/cluster
        else:
            count += file//cluster+1
   
    else:
        count += 1
        
print(int(count*cluster))

 

필요한 클러스터의 개수를 count라는 변수에 저장한다.

 

files에 담긴 파일의 개수만큼 반복한다. 만약 파일의 크기가 0이면 클러스터가 필요없으므로 count를 증가시키지 않는다.

 

만약 파일의 크기가 클러스터보다 큰 경우 파일을 클러스터로 나누었을 때 나머지가 없다면 개수에 몫만큼 더해주고, 나머지가 있다면 클러스터가 1개 더 필요하므로, 몫에다가 1을 더 더해준다.

 

파일이 클러스터보다 작다면 개수를 1 증가시킨다.

 

원하는 결과는 사용한 디스크의 공간이므로 필요한 클러스터의 개수(count)와 클러스터의 크기를 곱해서 출력한다.

 

<전체 코드>

input()

files = list(map(int, input().split()))

cluster = int(input())

count = 0

for file in files:
    if file == 0:
        continue

    elif file > cluster:
        if file % cluster == 0:
            count += file/cluster
        else:
            count += file//cluster+1

    else:
        count += 1

print(int(count*cluster))
728x90
반응형