문제1185--[기초-종합] 그림 데이터 저장용량 계산하기(설명)(C)

1185: [기초-종합] 그림 데이터 저장용량 계산하기(설명)(C)

[만든사람 : 전현석, 정종광(채점데이터 및 확인), 배준호(확인), 최웅선(확인), 김지혜(그림) (2013)]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

본 문제는 C 의 빠른 기초 학습을 위해 설계된 문제로서 C 코드 제출을 기준으로 설명되어 있습니다.
------

가로 해상도를 w 
(아주 작은 색 점인 픽셀(pixel)들로 큰 그림을 만든다고 할 때, 가로 방향으로 픽셀의 개수를 의미한다.) 

세로 해상도를 h 
(세로 방향으로 픽셀의 개수를 의미한다.) 

한 픽셀을 저장하는데 사용할 비트 수를 b 라고 할 때, 
(한 픽셀의 색을 저장하기 위해서, RGB 각 색에 대해서 각각 8 비트씩 24비트로 저장할 수 있다.) 

비트맵 방식으로 그림을 저장하기 위해서 필요한 그림 데이터 저장 용량을 계산해보자. 
참고 
눈에 보이는 그림(사진, 그래픽 등)을 컴퓨터에 저장하고 처리하기 위해서는 
디지털 데이터로 바꾸어 저장해야 한다. 

** 사진, 이미지 : 카메라 등으로 직접 찍은 그림 
** 그래픽 : 점, 선, 면을 이용해서 그려낸 그림

그림을 저장하는 가장 간단한 방법으로는 
그림의 가로 세로 크기 등과 함께, 그림을 구성하는 픽셀(pixel)들의 RGB 색상 데이터를 저장하는 것이다.

픽셀들의 색상 데이터는 빨강(red), 초록(green), 파랑(blue) 색으로 세기를 나누어 따로 저장할 수 있는데, 
RGB 각각에 대해서 8 비트씩 사용한다고 하면, 한 픽셀당 24 비트의 저장 용량이 필요하다. 
** 인쇄를 위해서 CMYK(cyan, magenta, yellow, key black) 색으로 나누는 방법도 있다. 
** 보다 정확한 색감 저장을 위해서 다양한 색상 스케일이 사용되고 있다. 

RGB 각각에 대해서 8 비트를 사용하면 R, G, B 각각 0 ~ 255 까지 256 가지의 색을 표현할 수 있고, 
총 256 * 256 * 256 = 16,777,216 가지의 서로 다른 색을 표현할 수 있다. 

예를 들어, 1024 * 768 해상도의 그림을 각 픽셀당 24 비트를 사용해서 저장하려면 
1024 * 768 * 24 bit 의 저장 공간이 필요한데, 
1024 * 768 * 24 / 8 / 1024 / 1024 로 계산하면 2.25MiB/1장 정도의 저장 용량이 필요하다. 
(실제 그런지 확인하고 싶다면, 간단한 그림 편집/수정 프로그램을 통해 확인할 수도 있다.)
(저장 용량이 매우 크기 때문에, jpg 와 같은 그림 파일이나 mpg, avi 와 같은 동영상 파일에는 그림 데이터가 압축해서 저장된다.) 
(참고로, 동영상의 경우 1초에 약 30장 정도의 그림이 필요하다. 이미지들을 압축하지 않는다면 매우 큰 저장 용량이 필요하다.) 

이렇게 픽셀들의 데이터로 그림을 저장하는 방식을 비트맵(bitmap) 방식이라고 한다.  
** 옛날 모니터 화면에 글씨를 출력하던 방식에서 이름을 따서 래스터(raster) 그래픽 방식이라고 부르기도 한다. 
** 점들과 그 점들을 연결하는 직선과 곡선들로 선, 면, 다각형들을 만들어 그림을 저장하는 벡터(vector) 그래픽 방식도 있다. 

압축하지 않은 비트맵 그림 데이터를 저장하는 대표적인 파일로 *.bmp 가 있다. 
(*기본적으로는 비압축이지만 데이터를 압축해서 저장할 수도 있다.)


** 저장 용량 단위
      8 bit(비트)           = 1 byte(바이트)
1024 byte(210 byte) = 1 KiB(키비바이트) 또는 KB(킬로바이트)
1024 KiB(210 KiB)      = 1 MiB(메비바이트) 또는 MB(메가바이트)
1024 MiB(210 MiB)     = 1 GiB(기비바이트) 또는 GB(기가바이트)
1024 GiB(210 GiB)      = 1 TiB(테비바이트) 또는 TB(테라바이트)
(* KiB, MiB, GiB, TiB, ... 는 정확하게 210배씩 증가함을 나타내는 단위이다.)


입력 설명

문제에서 설명한 
정수 w, h, b 값이 공백으로 구분되어 입력된다. 
(1<=w,h<=1024, 4<=b(4의 배수)<=40) 

출력 설명

그림 데이터를 저장하기 위해서 필요한 저장 용량을 MiB 단위로 바꾸어 출력한다.
(단, 소수점 둘째 자리까지 반올림해서 MiB 단위까지 공백을 두고 출력한다.) 

입력 예시 Copy

1024 768 24

출력 예시 Copy

2.25 MiB

도움

기초100제(c)1 v1.5 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.

출처/분류