일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Memory Forensics
- 리버싱
- 코딩
- C language
- 리버싱 핵심원리
- cmd
- SQLD
- 악성코드
- C
- 오늘의 보안동향
- Defcon DFIR CTF 2019
- Volatility
- 보안동향
- 코드업
- DEFCON
- 정보보안기사
- 오늘의 보안
- C 프로그래밍
- 다운로드
- sql
- c언어
- ctf
- 보안
- codeup
- Code Up
- defcon.mem
- 오늘의 영어
- 설치
- 멀웨어
- 랜섬웨어
- Today
- Total
오브의 빛나는 별
Code Up(코드업) 1084번~1088번 (C언어) 본문
[1084] 빛 섞어 색 만들기
<문제>
빨강(red), 초록(green), 파랑(blue) 빛을 섞어
여러 가지 빛의 색을 만들어 내려고 한다.
빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때,
(빛의 강약에 따라 0 ~ n-1 까지 n가지의 빛 색깔을 만들 수 있다.)
주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과
총 가짓 수를 계산해보자.
<정답>
#include <stdio.h>
int main(void)
{
int i, j, k, count=0;
int r, g, b;
scanf("%d%d%d", &r, &g, &b);
for(i=0; i<r;i++)
for(j=0; j<g; j++)
for(k=0; k<b; k++)
{
printf("%d %d %d\n", i, j, k);
count++;
}
printf("%d", count);
}
[1085] 소리 파일 저장용량 계산하기
<문제>
소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다.
마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크해
그 값을 정수값으로 바꾸고, 그 값을 저장해 소리를 파일로 저장할 수 있다.
값을 저장할 때에는 비트를 사용하는 정도에 따라 세세한 녹음 정도를 결정할 수 있고,
좌우(스테레오) 채널로 저장하면 2배… 5.1채널이면 6배의 저장공간이 필요하고,
녹음 시간이 길면 그 만큼 더 많은 저장공간이 필요하다.
1초 동안 마이크로 소리강약을 체크하는 수를 h
(헤르쯔, Hz 는 1초에 몇 번? 체크하는가를 의미한다.)
한 번 체크한 결과를 저장하는 비트 b
(2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..)
좌우 등 소리를 저장할 트랙 개수인 채널 c
(모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.)
녹음할 시간 s가 주어질 때,
필요한 저장 용량을 계산하는 프로그램을 작성해보자.
<정답>
#include <stdio.h>
int main(void)
{
int h=h<=48000;
int b=b<=32;
int c=c<=5;
int s=s<=6000;
double sum=0;
scanf("%d%d%d%d", &h, &b, &c, &s);
sum = (float)h * b * c * s / 8388608;
printf("%.1lf MB", sum);
return 0;
}
※ 8 bit(비트) = 1byte(바이트) // 8bit=1Byte
1024 Byte(210 byte) = 1KB(킬로 바이트) // 1024bit=1KB
1024 KB(210 KB) = 1MB(메가 바이트)
1024 MB(210 MB) = 1GB(기가 바이트)
1024 GB(210 GB) = 1TB(테라 바이트)
[1086] 그림 파일 저장용량 계산하기
<문제>
이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.
가장 기본적인 방법으로는 그림을 구성하는 한 점(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 가 주어질 때,
압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.
<정답>
#include <stdio.h>
int main(void)
{
int w, h, b=b*4<=40;
double sum=0;
scanf("%d%d%d", &w, &h, &b);
sum = (float)w * h * b / 8388608;
printf("%.2lf MB", sum);
return 0;
}
[1087] 여기까지! 이제 그만~
<문제>
1, 2, 3 ... 을 순서대로 계속 더해나갈 때,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.
하지만, 이번에는 그 때의 합을 출력해야 한다.
예를 들어 57을 입력하면
1+2+3+...+8+9+10=55에 다시 11을 더해 66이 될 때,
그 값 66이 출력되어야 한다.
<정답>
#include <stdio.h>
int main(void)
{
int n, i, sum=0;
scanf("%d", &n);
for(i=1; ; i++)
{
sum+=i;
if(sum>=n)
break;
}
printf("%d", sum);
}
[1088] 3의 배수는 통과?
<문제>
1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.
예를 들면,
1 2 4 5 7 8 10 11 13 14 ...
와 같이 출력하는 것이다.
<정답>
#include <stdio.h>
int main(void)
{
int n, i, sum=0;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
if(i%3==0)
continue;
printf("%d ", i);
}
}
'코드업(C언어)' 카테고리의 다른 글
Code Up(코드업) 1089번~1092번 (C언어) (0) | 2023.09.12 |
---|---|
Code Up(코드업) 1081번~1083번 (C언어) (0) | 2023.09.05 |
Code Up(코드업) 1078번~1080번 (C언어) (0) | 2023.09.03 |
Code Up(코드업) 1074번~1077번 (C언어) (0) | 2022.09.27 |
Code Up(코드업) 1071번~1073번 (C언어) (0) | 2022.09.27 |