이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

포렌식 & 개발 이야기 - Forensics & Development

Pental - Forensics / iOS / Windows / Android / Kakaotalk / Telegram / Etc

[브론즈 2] 백준 1350 - 진짜 공간 (파이썬)

  • 2025.09.09 09:32
  • Programming/백준
글 작성자: pental

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [브론즈 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
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

카테고리

  • Category (507) N
    • Forensics (19)
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (25)
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (10)
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (311) N
      • C (10)
      • Python (11)
      • 백준 (257) N
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (9)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • pental
  • 디지털포렌식
  • 프로그래머스
  • Forensics
  • 포렌식
  • 백준
  • 파이썬
  • axiom
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바