6084 : [기초-종합] 소리 파일 저장용량 계산하기(py)
문제설명 |
소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다. 마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크하고, 한 번씩 체크할 때 마다 그 값을 정수값으로 바꾸어 저장하는 방식으로 소리를 파일로 저장할 수 있다. 값을 저장할 때에는 비트를 사용하는 정도에 따라 세세한 녹음 정도를 결정할 수 있고, 좌우(스테레오) 채널로 저장하면 2배… 5.1채널이면 6배의 저장공간이 필요하고, 녹음 시간이 길면 그 만큼 더 많은 저장공간이 필요하다. 1초 동안 마이크로 소리강약을 체크하는 횟수를 h (헤르쯔, Hz 는 1초에 몇 번? 체크하는가를 의미한다.) 한 번 체크한 값을 저장할 때 사용하는 비트수를 b (2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..) 좌우 등 소리를 저장할 트랙 개수인 채널 개수를 c (모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.) 녹음할 시간(초) s가 주어질 때, 필요한 저장 용량을 계산하는 프로그램을 작성해보자. 실제로, 일반적인 CD 음질(44.1KHz, 16bit, 스테레오)로 1초 동안 저장하려면 44100 * 16 * 2 * 1 bit의 저장공간이 필요한데, 44100*16*2*1/8/1024/1024 로 계산하면 약 0.168 MB 정도가 필요하다. 이렇게 녹음하는 방식을 PCM(Pulse Code Modulation) 방법이라고 하는데, 압축하지 않은 순수한(raw) 소리 데이터 파일은 대표적으로 *.wav 가 있다. |
입력값 |
h, b, c, s 가 공백을 두고 입력된다. h는 48,000이하, b는 32이하(단, 8의배수), c는 5이하, s는 6,000이하의 자연수이다. |
출력값 |
필요한 저장 공간을 MB 단위로 바꾸어 출력한다. 단, 소수점 첫째 자리까지의 정확도로 출력하고 MB를 공백을 두고 출력한다. |
입력 예시 |
44100 16 2 10 |
출력 예시 |
1.7 MB |
정답 및 가능한 정답
h,b,c,s=map(int,input().split())
print("%.1f"%(h*b*c*s/8/1024/1024), "MB")
h, b, c, s = input().split()
h = int(h)
b = int(b)
c = int(c)
s = int(s)
print(round(h*b*c*s/8/1024/1024, 1), "MB")
해설
44100 * 16 * 2 * 1 bit의 저장 공간을 MB 단위로 출력해야 하니까
bit를 byte로 계산하기 위해 8로 나누고 MB이므로 1024로 두 번 나눈다.
h*b*c*s/8/1024/1024를 계산하고 소수점 1의 자릿수까지 출력한 다음 MB를 공백 두고 출력하라고 했으니
print("%.1f"%(h*b*c*s/8/1024/1024), "MB")
위와 같은 식을 작성할 수 있다.