728x90
반응형
6085 : [기초-종합] 그림 파일 저장용량 계산하기(py)
시간 제한 : 1초 메모리 제한 : 128 MB
문제 설명
이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.
가장 기본적인 방법으로는 그림을 구성하는 한 점(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비트(rgb 각각 8비트씩 3개)로 저장하려면
1024 * 768 * 24 bit의 저장공간이 필요한데,
1024*768*24/8/1024/1024 로 계산하면 약 2.25 MB 정도가 필요하다.
실제 그런지 확인하고 싶다면, 간단한 그림 편집/수정 프로그램을 통해 확인할 수 있다.
입력
w, h, b 가 공백을 두고 입력된다.
단, w, h는 모두 정수이고 1~1024 이다. b는 40이하의 4의 배수이다.
출력
필요한 저장 공간을 MB 단위로 바꾸어 출력한다.
단, 소수점 셋째 자리에서 반올림하여 둘째 자리까지 출력한다.
입력 예시
1024 768 24
출력 예시
2.25 MB
내 풀이
a,b,c=map(int,input().split())
totalbit=a*b*c
totalbyte=totalbit/8
totalkb=totalbyte/1024
totalmb=totalkb/1024
print("%0.2f MB" % totalmb)
모범 답안
w,h,b = input().split()
res=int(w)*int(h)*int(b)/1024/1024/8
print('%.2f'%res,"MB")
해설
6084번 문제와 같이 문제에서 주어진 계산값들을 따라 변수를 생성하고 연산한 뒤, 최종적으로 totalmb를 출력해줍니다.
totalmb를 출력할 때는 문자열 포매팅을 사용하여 소수점 둘 째 자리까지 출력해줍니다.
728x90
반응형
'알고리즘 (Python) > 코드업 기초 100제' 카테고리의 다른 글
[CodeUp] 코드업 기초 100제 6087번 풀이 - 파이썬(python) (0) | 2021.04.27 |
---|---|
[CodeUp] 코드업 기초 100제 6086번 풀이 - 파이썬(python) (0) | 2021.04.27 |
[CodeUp] 코드업 기초 100제 6084번 풀이 - 파이썬(python) (0) | 2021.04.27 |
[CodeUp] 코드업 기초 100제 6083번 풀이 - 파이썬(python) (0) | 2021.04.27 |
[CodeUp] 코드업 기초 100제 6082번 풀이 - 파이썬(python) (0) | 2021.04.27 |