일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코드업파이썬
- 파이썬기초100제
- 클라우드
- Blazor
- Azure
- DataScience
- 파이썬기초
- 자연어처리
- 머신러닝
- 빅데이터
- 생성형AI
- Microsoft
- gcp
- 파이썬알고리즘
- 파이썬
- 한빛미디어
- attention
- GenAI
- 코드업
- 알고리즘
- 데이터사이언스
- C#
- GenerativeAI
- 블레이저
- nlp
- 코드업100제
- 데이터분석
- 구글퀵랩
- Python
- codeup
- Today
- Total
Tech for good
[파이썬/Python] CodeUp 파이썬 기초 100제 6085 - 6086 본문
6085 : [기초-종합] 그림 파일 저장용량 계산하기
- 이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.
가장 기본적인 방법으로는 그림을 구성하는 한 점(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(테라 바이트)
입력
w, h, b 가 공백을 두고 입력된다.
단, w, h는 모두 정수이고 1~1024 이다. b는 40이하의 4의 배수이다.
출력
필요한 저장 공간을 MB 단위로 바꾸어 출력한다.
단, 소수점 셋째 자리에서 반올림하여 둘째 자리까지 출력한다.
입력 예시
1024 768 24
출력 예시
2.25 MB
# 가로 해상도 - w, 세로 해상도 - h
# 한 픽셀을 저장하기 위한 비트 - b
w,h,b = map(int, input().split())
space = (w * h * b) / 1024 / 1024 /8
print('%.2f MB' %space)
6086 : [기초-종합] 거기까지! 이제 그만~
- 1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.
하지만, 이번에는 그 때 까지의 합을 출력해야 한다.
예를 들어, 57을 입력하면
1+2+3+...+8+9+10=55에서 그 다음 수인 11을 더해 66이 될 때,
그 값 66이 출력되어야 한다.
예시
...
while True :
s += c
c += 1
if s>=n :
break
print(s)
참고
조건문이나 반복문의 코드블록 안에서 break 가 실행되면,
반복실행을 중단(break)하고, 가장 가까운 반복 블록의 밖으로 빠져나간다.
입력
언제까지 합을 계산할 지, 정수 1개를 입력받는다.
단, 입력되는 자연수는 100,000,000이하이다.
출력
1, 2, 3, 4, 5 ... 순서대로 계속 더해가다가, 그 합이 입력된 정수보다 커지거나 같아지는 경우,
그때까지의 합을 출력한다.
입력 예시
57
출력 예시
66
for문 -> 반복하는 횟수가 정해져 있는 경우, 즉 명확한 경우에 사용
while문 -> 얼마나 반복 수행해야 할 지 모를 때, 특정한 조건에 도달할때까지 계속하고 싶을 때 사용
While문 - 무한 루프
- 파이썬에서 무한 루프는아래와 같이 구현할 수 있다. 다음은 무한 루프의 기본 형태이다.
while True:
수행할 문장1
수행할 문장2
...
a = int(input())
i = 1
sum = 0
while True:
sum += i
i += 1
if sum >= a:
break
print(sum)
a = int(input())
i = 0
sum = 0
while True:
i += 1
sum += i
if sum >= a:
break
print(sum)
'IT > Computer Science' 카테고리의 다른 글
[파이썬/Python] CodeUp 파이썬 기초 100제 6092 - 6095 (0) | 2022.05.15 |
---|---|
[파이썬/Python] CodeUp 파이썬 기초 100제 6087 - 6091 (0) | 2022.05.08 |
[파이썬/Python] CodeUp 파이썬 기초 100제 6083 - 6084 (0) | 2022.04.24 |
[파이썬/Python] CodeUp 파이썬 기초 100제 6080 - 6082 (0) | 2022.04.10 |
[파이썬/Python] CodeUp 파이썬 기초 100제 6077 - 6079 (0) | 2022.04.03 |