CodeUp(코드업) 풀이 (1086번)

이 포스팅은 codeup.kr(코드업)의 문제를 Python3로 풀고 정리한 내용입니다.


1086 : [기초-정보] 그림 파일 저장용량 계산하기

문제 설명

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

가장 기본적인 방법으로는

그림을 구성하는 한 점(pixel, 픽셀)의 색상을 나타내기 위해 빨강(r), 녹색(g), 파랑(b) 의 3가지의 정도값을 이용한다.

예를 들어 r, g, b 각 각 8비트(0~255 가지 가능)를 사용한다고 하면,

한 점의 색상은 3가지 r, g, b의 8비트+8비트+8비트로 총 24비트로 표현하고 총 2^24 가지의 물감(색)을 사용할 수 있는 것이다.

한편, 그러한 점이 매우 많이 모여 하나의 큰 이미지를 저장하게 되는데,

가로로 1024 개, 세로로 768개의 점들을 사용할 수 있다.

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

이렇게 압축하지 않고 이미지의 원래(raw) 데이터를 그대로 저장하는 대표적인 이미지 파일이 *.bmp 파일이며

비트로 그림을 구성한다고 하여 비트맵 방식 또는 래스터 방식이라고 한다.

이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트(b) 주어질 때,

압축하지 않고 저장하기 위한 저장 용량을 계산하는 프로그램을 작성해 보자.

예를 들어
일반적인 1024 _ 768 사이즈(해상도)의 각점에 대해 24비트(rgb 각각 8비트씩 3개)로 저장하려면
1024 _ 768 * 24 bit의 저장공간이 필요하다.

실제 그런지 확인하려면, 간단한 그림 편집 수정 프로그램을 이용해 저장해 보면 된다.

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

입력

w, h, b 가 공백을 두고 입력된다.
(단, w, h는 모두 정수이고 1~1024 이다. b는 40이하의 4의 배수이다.)

출력

필요한 저장 공간을 MB 단위로 바꾸어 출력한다.
(단, 소수점 셋째 자리에서 반올림해 둘 째 자리까지 출력하고 단위 MB를 공백을 두고 출력한다.)

입력 예시

1024 768 24

출력 예시

2.25 MB

내 풀이

1
2
3
4
5
6
7
w, h, b =input().split()

w = int(w);
h = int(h);
b = int(b);

print(format((w*h*b/8/1024/1024),'0.2f'), 'MB');

모범 답안

1
2
3
4
5
6
7
a,b,c=input().split()

W=int(a)
H=int(b)
B=int(c)

print('%.2f MB' % (W*H*B/8/1024/1024))