[CodeUp 기초 100제] 6085번 풀이 with 파이썬(python)

Jeony·2021년 9월 14일
0

codeup 기초 100제

목록 보기
85/98
post-thumbnail

문제

종합

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

가장 기본적인 방법으로는 그림을 구성하는 한 점(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 정도가 필요하다.

실제 그런지 확인하고 싶다면, 간단한 그림 편집/수정 프로그램을 통해 확인할 수 있다.

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

입력 예시

1024 768 24

출력 예시

2.25 MB

답안

모델 답안

h, w, b = input().split()
h=int(h)
w=int(b)
b=int(c)
print(format(h*w*b/8/1024/1024, ".2f"), "MB")

내 답안

height, width, bit = input().split()
height, width, bit = int(height), int(width), int(bit)
dbstorage = height * width * bit / 8 / 1024 / 1024
print(format(dbstorage, "0.2f"), "MB")

풀이

내 풀이

input(): 프롬프트를 띄워서 사용자의 입력 받을 수 있게 해준다.
(단, 입력 받은 것은 문자열로 저장된다. print(type()))으로 type() 괄호 안에 변수를 넣고 찍으면 정수인지, 문자열인지, 무슨 타입인지 확일 할 수 있다!)

int(n): 위의 input()에서 말했듯이 input으로 받은 값은 문자열로 저장된다.
산술을 하기 위해, 문자열을 정수로 변환시켜주는 int()를 써서 변환시켜준다.

format(): 문자열 포멧 함수로 문자열 사이에 특정 변수의 값을 넣어주고 출력 형식을 지정할 수 있다.

format(실수, "0.?f"): 실수의 원하는 소수점 범위를 나타낼 수 있다.
format(3.141592, "0.1f") = 소수점 첫째 짜리까지의 3.1 표현
format(3.141592, "0.2f") = 소수점 둘째 짜리까지의 3.14 표현
format(3.141592, "0.3f") = 소수점 셋째 짜리까지의 3.141 표현

print(): 괄호 안의 내용을 출력!

profile
알고리즘으로 문제를 해결하다가 포기함

0개의 댓글