1350번: 진짜 공간 (acmicpc.net)
문제
어떤 파일 시스템에는 디스크 공간이 파일의 사이즈와 항상 같지는 않다. 이것은 디스크가 일정한 크기의 클러스터로 나누어져 있고, 한 클러스터는 오직 한 파일만 이용할 수 있기 때문이다.
예를 들어, 클러스터의 크기가 512바이트이고, 600바이트 파일을 저장하려고 한다면, 두 개의 클러스터에 저장하게 된다. 두 클러스터는 다른 파일과 공유할 수 없기 때문에, 디스크 사용 공간은 1024바이트가 된다.
파일의 사이즈와 클러스터의 크기가 주어질 때, 사용한 디스크 공간을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 파일의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌 정수이다. 마지막 줄에는 클러스터의 크기가 주어진다. 이 값은 1,048,576보다 작거나 같은 자연수이다.
출력
첫째 줄에 사용한 디스크 공간을 출력한다.
예제 입/출력
소스코드
문제풀이
- N : 파일의 개수 정수로 입력 받기
- file : 공백을 사이에 두고 하나씩 정수형으로 주어지는 파일의 크기 리스트로 입력 받기
- C : 클러스터의 크기 정수로 입력 받기
- res : 사용한 디스크 공간 초기화
- 파일의 크기가 클러스터의 크기보다 클 때, 파일의 크기를 클러스터의 크기로 나눈 나머지가
- 0이 아니라면 파일의 크기를 클러스터의 크기로 나눈 몫보다 하나의 클러스터가 더 필요하다는 것이므로 (몫 + 1)을 클러스터의 크기에 곱해준 것을 res에 저장
- 0이면 파일의 크기를 클러스터로 나눈 몫만큼의 클러스터가 필요하다는 것이므로 몫과 클러스터의 크기를 곱한 값을 res에 저장
- 파일의 크기가 0이라면 클러스터가 필요 없으므로 res에 아무 값도 저장하지 않고 반복문을 계속 진행
- 파일의 크기가 클러스터 크기보다 작다면 클러스터 1개로 충분하기 때문에 res에 클러스터의 크기를 저장
위의 방식으로 파일의 개수인 N만큼 반복문을 진행하며 저장해둔 res 값을 출력
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 11179 2진수 뒤집기 (0) | 2023.01.14 |
---|---|
[백준/Python] #1350 진짜 공간 (0) | 2023.01.14 |
[BOJ /Python] 10867 중복 빼고 정렬하기 (0) | 2023.01.12 |
[백준/Python] 2511번 카드놀이 (0) | 2023.01.11 |
[백준/Python] 2576번: 홀수 (0) | 2023.01.11 |