본문 바로가기
Data structure & Algorithm/Code up

[Code up] 코드업 6085번 문제 풀이(Python)

by LydiaRyu 2022. 7. 19.
반응형

코드업 6085번 문제: 그림 파일 저장용량 계산하기(Python)

 

🧩 문제 설명

이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.

가장 기본적인 방법으로는 그림을 구성하는 한 점(pixel, 픽셀)의 색상을
빨강(r), 초록(g), 파랑(b)의 3가지의 빛의 세기 값으로 따로 변환하여 저장하는 것인데,

예를 들어 r, g, b 각 색에 대해서 8비트(0~255, 256가지 가능)씩을 사용한다고 하면,

한 점의 색상은 3가지 r, g, b의 8비트+8비트+8비트로 총 24비트로 표현해서
총 2^24 가지의 서로 다른 빛의 색깔을 사용할 수 있는 것이다.

그렇게 저장하는 점을 모아 하나의 큰 이미지를 저장할 수 있게 되는데,
1024 * 768 사이즈에 각 점에 대해 24비트로 저장하면 그 이미지를 저장하기 위한
저장 용량을 계산할 수 있다.

이렇게 이미지의 원래(raw) 데이터를 압축하지 않고 그대로 저장하는 대표적인 이미지 파일이
*.bmp 파일이며, 비트로 그림을 구성한다고 하여 비트맵 방식 또는 래스터 방식이라고 한다.

이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때,
압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.

입력 예시

1024 768 24

출력 예시

2.25 MB

 

😃 문제 풀이

 

w, b, s = map(int, input().split())

total = w*b*s/8/1024/1024

print("%0.2f MB" % total)

 

  • 먼저, 이미지 파일의 사이즈는 w(가로) * h(세로)이며 b (비트)로 저장하기 위해서 모두 곱한 w*h*b를 한다. 

 

8 bit(비트)           = 1byte(바이트)   
1024 Byte(210 byte) = 1KB(킬로 바이트)  
1024 KB(210 KB)      = 1MB(메가 바이트)
1024 MB(210 MB)     = 1GB(기가 바이트)
1024 GB(210 GB)      = 1TB(테라 바이트)

 

  • 현재 이미지는 bit(비트) 단위이기 때문에 MB(메가바이트)의 저장 단위로 나타내기 위해서 1bit → byte(÷8) / 1byte → KB(÷1024) / 1KB → MB(÷1024)로 변환할 수 있다. 따라서, w*h*b/8/1024/1024로 MB 단위의 저장공간을 표현한다.

 

  • 문제와 같이 소수점 둘째 자리까지 출력하고 MB를 붙이기 위해서 format에 맞게 "0.2f MB"로 지정한다.
728x90

댓글