[브론즈 2] 백준 1350 - 진짜 공간 (파이썬)
https://www.acmicpc.net/problem/1350
파일 시스템을 공부하는 나에겐 재밌는 문제이다. 먼저 이 문제는 파일 시스템에서는 디스크 공간이 파일 사이즈와 항상 같지 않고, 디스크가 일정한 크기의 클러스터로 나뉘어져있고, 한 클러스터는 오직 한 파일만 이용할 수 있다고 한다.
여기서 중요한것은 한 클러스터는 오직 한 파일만 이용할수 있다는 것이다.
예제에서 클러스트가 512bytes이고, 600bytes의 파일을 저장하려고 한다면 두개의 클러스터에 저장하게 된다.
이렇게 600 bytes의 파일을 저장하게되면 2개의 클러스터를 사용하게 된다.
또 하나 중요한것은 한 클러스터에는 하나의 파일만 이용할 수 있다는 점이다.
이렇게 500, 12, 100이 들어왔다면 512Bytes에 2개의 파일을 저장할수 있는것이 아닌 아래 그림과 같이 하나의 클러스터에는 한개의 파일만 저장 할 수 있는 것이다.
이걸 코딩으로 나타내면 다음과 같이 작성 할 수 있다.
# 백준 1350 - 진짜 공간
N = int(input())
SIZE = list(map(int, input().split()))
CLUSTER = int(input())
result = 0
for i in SIZE :
if i == 0 :
continue
if i > CLUSTER :
if i % CLUSTER > 0 :
result += i // CLUSTER + 1
else :
result += i // CLUSTER
else :
result += 1
print(result * CLUSTER)
N과 파일 크기들, 클러스터 크기를 입력받고, 파일 크기가 0인 파일은 클러스터에 저장되지 않아도 되므로, 다음 파일로 넘어간다.
만약에 파일 크리가 클러스터보다 크다면 클러스터를 연속해서 사용해야하는데, 여기서 클러스터가 1024 크기이고, 들어오는 파일이 2049 라면 1024 + 1024 + 1 을 사용해야하기에, 총 3개가 들어온다.
따라서 파일 크기는 클러스터 크기로 나머지 연산을 했을때 0보다 크다면 + 1을 적용하고, 파일 크기를 클러스터 사이즈로 나누었을때 몫을 더해준다.
나머지가 없는 경우에는 파일 크기를 클러스터 사이즈로 나누었을때의 몫을 더해준다.
그외에는 그냥 + 1을 통해서 클러스터 갯수를 증가시키고, 마지막에는 클러스터 갯수 * 클러스터 사이즈로 결과를 도출한다.
'Programming > 백준' 카테고리의 다른 글
[브론즈 1] 백준 1356 - 유진수 (파이썬) (0) | 2025.09.09 |
---|---|
[브론즈 2] 백준 1297 - TV 크기 (파이썬) (0) | 2025.09.09 |
[실버 5] 백준 11723 - 집합 (파이썬) (0) | 2025.08.13 |
백준 5522, 10178, 9295, 10569, 2921 (파이썬) (1) | 2025.08.01 |
[실버 3] 백준 6666 - Help Me with the Game (파이썬) (2) | 2025.07.31 |
댓글
이 글 공유하기
다른 글
-
[브론즈 1] 백준 1356 - 유진수 (파이썬)
[브론즈 1] 백준 1356 - 유진수 (파이썬)
2025.09.09 -
[브론즈 2] 백준 1297 - TV 크기 (파이썬)
[브론즈 2] 백준 1297 - TV 크기 (파이썬)
2025.09.09 -
[실버 5] 백준 11723 - 집합 (파이썬)
[실버 5] 백준 11723 - 집합 (파이썬)
2025.08.13 -
백준 5522, 10178, 9295, 10569, 2921 (파이썬)
백준 5522, 10178, 9295, 10569, 2921 (파이썬)
2025.08.01