Lami
삶이 온통 사람의 길이니
Lami
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Elice (1)
      • 회고록 (1)
    • Git (0)
    • HTML ▪ CSS (4)
    • JavaScript (7)
      • BOJ (2)
      • Programmers (0)
      • Study Note (5)
    • TypeScript (0)
    • React (21)
      • Lecture (19)
      • Study Note (2)
    • Python (44)
      • CodeUp (38)
      • Programmers (0)
      • Study Note (6)
    • Modern Agile (80)
      • Tech Talk (7)
      • TIL (73)
    • 문제해결 (1)
    • 회고록 (5)
    • 도란도란 (2)

블로그 메뉴

  • Github

공지사항

  • 👋 안녕하세요!

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Lami

삶이 온통 사람의 길이니

Python/CodeUp

코드업 기초 100제 86번 - 그림 파일 저장용량 계산하기

2021. 11. 22. 21:48
**서론**
이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.

가장 기본적인 방법으로는 그림을 구성하는 한 점(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비트로 저장하면 그 이미지를 저장하기 위한
저장 용량을 계산할 수 있다.

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

**문제의 핵심 포인트**
실제로 일반적인 1024 * 768 사이즈(해상도)의 각점에 대해
24비트(rgb 각각 8비트씩 3개)로 저장하려면 1024 * 768 * 24 bit의 저장 용량이 필요하다.

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

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

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

1024 768 24

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

2.25 MB

 

<풀이>

더보기

내가 쓴 풀이

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

result = (w*h*b)/(8*1024**2)
print(round(result, 2), 'MB')

바로 앞문제랑 같은 유형이네. 이번에는 bit에서 mb로 변환하는 계산식 보지도 않았고, 한 번에 적었다. 히히 

 

강의 풀이

w, h, b = map(int, input().split())
result = (w*h*b) / (8 * 1024**2)
print( round(result, 2), 'MB' )

 

<풀이 비교>

ㅋㅋㅋㅋㅋ 이번에는 완전 똑같이 풀었다. 이제 bit를 mb로 변환하는 문제는 문제없어~🤭

'Python > CodeUp' 카테고리의 다른 글

코드업 기초 100제 88번 - 3의 배수는 통과?  (0) 2021.11.22
코드업 기초 100제 87번 - 여기까지! 이제 그만~  (0) 2021.11.22
코드업 기초 100제 85번 - 소리 파일 저장용량 계산하기  (0) 2021.11.22
코드업 기초 100제 84번 - 빛 섞어 색 만들기  (0) 2021.11.22
코드업 기초 100제 83번 - 3 6 9 게임의 왕이 되자  (0) 2021.11.22
    'Python/CodeUp' 카테고리의 다른 글
    • 코드업 기초 100제 88번 - 3의 배수는 통과?
    • 코드업 기초 100제 87번 - 여기까지! 이제 그만~
    • 코드업 기초 100제 85번 - 소리 파일 저장용량 계산하기
    • 코드업 기초 100제 84번 - 빛 섞어 색 만들기
    Lami
    Lami
    성장하는 즐거움을 알아가는 중입니다🌱

    티스토리툴바