티스토리 뷰

1078.

정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자. (사용에 편한 제어문을 사용할 것)

 

입력. 5
출력. 6
#include <stdio.h>

int main(void)
{
    int n, sum=0;
    scanf("%d", &n);
  
    for(int i=1; i<=n; i++){
        if(i%2==0){
            sum+=i;
        }
    }
    printf("%d",sum);
    return 0;
}

 

1079.

'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자.

 

입력. x b k d l q g a c
출력.
x
b
k
d
l
q
#include <stdio.h>

int main(void)
{
  char c = 'a';
  while(c!='q'){
    scanf("%c", &c);
    printf("%c", c);
  }

    return 0;
}

 

1080. 

1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지
계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

 

입력. 55
출력. 10
#include <stdio.h>

int main(void)
{
  int n;
  scanf("%d", &n);
  
  int sum=0;
  for(int i=1; i<n+1; i++){
  	sum+=i;
    if(sum>=n){
    	printf("%d",i);
        break;
    }
  }

  return 0;
}

 

1081. 

1부터 n까지, 1부터 m까지 숫자가 적힌
서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자.

 

입력. 2 3
출력.
1 1
1 2
1 3
2 1
2 2
2 3
#include <stdio.h>

int main(void)
{
    int n1, n2;
    scanf("%d %d", &n1, &n2);
	
    for(int i=0; i<n1; i++){
    	for(int j=0; j<n2; j++){
        	printf("%d %d\n",i+1, j+1);
        }
    }

    return 0;
}

 

1082.

16진수(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)를 배운
영일(01)이는 16진수끼리 곱하는 16진수 구구단에 대해서 궁금해졌다.

A, B, C, D, E, F 중 하나가 입력될 때,
1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.
(단, A ~ F 까지만 입력된다.)

 

입력. B
출력.
B*1=B
B*2=16
B*3=21
.
.
.
B*E=9A
B*F=A5
#include <stdio.h>

int main(void)
{
  int num;
  scanf("%X", &num);
  for(int i=1; i<16; i++){
  	printf("%X*%X=%X\n", num, i, num*i);
  }

  return 0;
}

 

1083.

3 6 9 게임을 하던 영일이는 3 6 9 게임에서 잦은 실수로 계속해서 벌칙을 받게 되었다.
3 6 9 게임의 왕이 되기 위한 마스터 프로그램을 작성해 보자. 10 보다 작은 정수 1개가 입력된다.

 

입력. 9
출력. 1 2 X 4 5 X 7 8 X
#include <stdio.h>

int main(void)
{
  int n;
  scanf("%d", &n);
  
  for(int i=1; i<=n; i++){
  	switch(i){
    	case 3: case 6: case 9:
        	printf("X "); break;
        default: 
        	printf("%d ",i); break;
    }
  }

  return 0;
}

 

1084.

빨강(red), 초록(green), 파랑(blue) 빛을 섞어
여러 가지 빛의 색을 만들어 내려고 한다.

빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때,
(빛의 강약에 따라 0 ~ n-1 까지 n가지의 빛 색깔을 만들 수 있다.)

주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과
총 가짓 수를 계산해보자.

 

입력. 2 2 2
출력. 
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
8
#include <stdio.h>

int main(void)
{
  int r, g, b, cnt=0;
  scanf("%d %d %d", &r, &g, &b);
  
  for(int i=0; i<r; i++){
  	for(int j=0; j<g; j++){
    	for(int k=0; k<b; k++){
        	printf("%d %d %d\n",i,j,k);
            cnt++;
        }
    }
  }
  printf("%d",cnt); 
  return 0;
}

 

1085.

1초 동안 마이크로 소리강약을 체크하는 수를 h (헤르쯔, Hz 는 1초에 몇 번? 체크하는가를 의미한다.)
한 번 체크한 결과를 저장하는 비트 b (2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..)
좌우 등 소리를 저장할 트랙 개수인 채널 c (모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.)

녹음할 시간 s가 주어질 때, 필요한 저장 용량을 계산하는 프로그램을 작성해보자.

실제로 일반적인 CD 음질(44.1KHz=44100Hz, 16bit, 스테레오)로 1초 동안 저장하려면 
(44100 * 16 * 2 * 1) / 8 bit의 저장공간이 필요하다.이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때,
압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.

 

**
      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(테라 바이트)
 

입력. 44100 16 2 10
출력. 1.7 MB
#include <stdio.h>

int main(void)
{
  long h, b, c, s;
  scanf("%ld %ld %ld %ld", &h, &b, &c, &s);
  double size = (h*b*c*s)/8;

  for(int i=0; i<2; i++){
  	size/=1024;    
  }

  printf("%.1lf MB", size); 

  return 0;
}

 

1086.

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

 

예를 들어 일반적인 1024 * 768 사이즈(해상도)의 각점에 대해 24비트(rgb 각각 8비트씩 3개)로 저장하려면 1024 * 768 * 24 bit의 저장 용량이 필요하다. 실제 그런지 확인하고 싶다면, 간단한 그림 편집/수정 프로그램을 통해 확인할 수 있다.

 

**
      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(테라 바이트)

 

입력. 1024 768 24
출력. 2.25 MB
#include <stdio.h>

int main(void)
{
  int w, h, b;
  scanf("%d %d %d", &w, &h, &b);
  double size = (w*h*b)/8;
  for(int i=0; i<2; i++){
  	size/=1024;    
  }

  printf("%.2lf MB", size); 

  return 0;
}

 

1087.

언제까지 합을 계산할 지, 정수 1개를 입력받는다. 단, 입력되는 자연수는 100,000,000이하이다.
1, 2, 3, 4, 5 ... 순서대로 계속 더해가다가, 그 합이 입력된 정수보다 커지거나 같아지는 경우, 그때까지의 합을 출력한다.

평가 기준
점수 범위 : 평가
90 ~ 100 : A
70 ~   89 : B
40 ~   69 : C
00 ~   39 : D

 

입력. 57
출력. 66
#include <stdio.h>

int main(void)
{
  int n;
  scanf("%d", &n);
  
  int sum=0;
  for(int i=1; i<n+1; i++){
  	sum+=i;
    if(sum>=n){
    	printf("%d",sum);
        break;
    }
  }

  return 0;
}

 

1088.

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.

예를 들면,
1 2 4 5 7 8 10 11 13 14 ...
와 같이 출력하는 것이다.

 

입력. 10
출력. 1 2 4 5 7 10
#include <stdio.h>

int main(void)
{
  int n;
  scanf("%d", &n);
  
  for(int i=1; i<=n; i++){
  	if(i%3!=0) printf("%d ", i);
  }

  return 0;
}

 

 

 

댓글
«   2024/12   »
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
최근에 올라온 글
글 보관함
Total
Today
Yesterday