총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.
#include <stdio.h> int main() { int n, v; int count=0; int num[100]; scanf("%d",&n); for (int i=0;i<n;i++){ scanf("%d",&num[i]); } scanf("%d",&v); for (int j=0;j<n;j++){ if(num[j] == v){ count++; } } printf("%d",count); return 0; }
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
#include <stdio.h> int main() { int small, big; int n; int num[1000000]; scanf("%d",&n); for (int i=0;i<n;i++) { scanf("%d",&num[i]); } small=big=num[0]; for (int i = 0;i<n;i++) { if (small>num[i]) { small=num[i]; } if (big<num[i]) { big=num[i]; } } printf("%d %d",small,big); return 0; }
n값을 입력받아 배열을 몇번까지 입력할 지 정한다. for문을 통해 num[0]값부터 입력받는다. small이랑 big값을 num[0]번값으로 저장하고, 각각 for문에서 0번부터 배열 끝까지 돌면서 small(big)에서 if문을 통해 작은값(큰 값)을 계속해서 비교해서 저장해 출력하도록 한다.
공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오.
#include <stdio.h> int main() { int N, M; int i, j, k; scanf("%d %d", &N, &M); int basket[101]={}; for (int m = 0; m < M; m++) { scanf("%d %d %d", &i, &j, &k); for (int x=i; x <= j; x++) { basket[x]=k; } } for (int i = 1; i <= N; i++){ printf("%d ",basket[i]); } return 0; }
N이 바구니 수 M이 공을 넣는 횟수이고 공을 넣는 작업을 M번 반복합니다
i: 시작 바구니 번호 j: 끝 바구니 번호 k: 넣을 공 번호
i번부터 j번 바구니까지 반복하면서 각 바구니에 번호 k번의 공을 넣고 출력합니다.
N * M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오
#include <stdio.h> int main() { int N, M; scanf("%d %d", &N, &M); int A[N][M], B[N][M], C[N][M]; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { scanf("%d", &A[i][j]); } } for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { scanf("%d", &B[i][j]); C[i][j] = A[i][j] + B[i][j]; } } for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { printf("%d ", C[i][j]); } printf("\n"); } return 0; }
첫번째 for문을 통해 행렬 A 입력한다. 둘째 for문을 통해 행렬 B 입력을 한다. 동
시에 행렬 A와의 합을 계산한다. 이후에 그 값을 새로운 C에 저장해서 출력한다.
칠판에 붙여진 단어들이 주어질 때, 영석이가 세로로 읽은 순서대로 글자들을 출력하는 프로그램을 작성하시오.
#include <stdio.h> #include <string.h> int main() { char words[5][16] = {0}; int max = 0; for (int i = 0; i < 5; i++) { scanf("%s", words[i]); int length = strlen(words[i]); if (length > max) { max = length; } } for (int j = 0; j < max; j++) { for (int i = 0; i < 5; i++) { if (words[i][j] != '\0') { printf("%c", words[i][j]); } } } printf("\n"); return 0; }
#include <stdio.h> int main() { int arr[9][9]; int max = -1; int row = 0, col = 0; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { scanf("%d", &arr[i][j]); if (arr[i][j] > max) { max = arr[i][j]; row = i; col = j; } } } printf("%d\n", max); printf("%d %d\n", row + 1, col + 1); return 0; }
출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.
#include <stdio.h> int main() { int n, i, t; int a[24]= {0}; scanf("%d", &n); for(i=1;i<=n;i++) { scanf("%d", &t); a[t]++; } for(i=1; i<=23; i++){ printf("%d ", a[i]); } return 0; }
출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자.
#include <stdio.h> int main() { int n,i; int a[10000]={}; scanf("%d", &n); for(i=0; i<n; i++) scanf("%d", &a[i]); for(i=n-1; i>=0; i--) printf("%d ", a[i]); return 0; }
출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.
#include <stdio.h> int main() { int small; int n; int num[1000000]; scanf("%d",&n); for (int i=0;i<n;i++) { scanf("%d",&num[i]); } small=num[0]; for (int i = 0;i<n;i++) { if (small>num[i]) { small=num[i]; } } printf("%d",small); return 0; }
입력이 n인 경우의 2차원 배열을 출력해보자.
#include <stdio.h> int main() { int n; int num=1; scanf("%d",&n); for (int i=0;i<n;i++){ for (int j=0; j<n;j++){ printf("%d ",num); num++; } printf("\n"); } return 0; }
n의 값을 입력받는다. 행과 열 둘다 n이여야 하기 때문에 이중for문을 사용한다.
num을 사용해서 1부터 for문이 바뀔 때 마다 num에 1을 더해줘서 1부터 순서대로 출력한다.
입력이 n m인 경우의 2차원 배열을 출력해보자.
#include <stdio.h> int main() { int n, m; scanf("%d %d", &n, &m); int val = n * m; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { printf("%d ", val - (j* n + i)); } printf("\n"); } return 0; }
입력이 n인 경우의 2차원 배열을 출력해보자.
#include <stdio.h> int main() { int n; scanf("%d", &n); int arr[100][100]; int num = 1; for (int col = 0; col < n; col++) { if (col % 2 == 0) { for (int row = 0; row < n; row++) { arr[row][col] = num++; } } else { for (int row = n - 1; row >= 0; row--) { arr[row][col] = num++; } } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
–2147483649 을 출력하시오.
long long int f() { return -2147483649LL; }
배열에서 가장 큰 값이 처음 나타나는 위치를 출력하시오.
int f(){ int max =0; for(int i =0;i<n;i++){ if (d[i] > d[max]){ max=i; } } return max+1; }
max값을 초기화 해준다. n값만큼 for문을 돌면서 d의 인덱스 0번(i 값)부터 max값이랑 비교해서 if max값보다 큰 인덱스 값이 있으면 그 값을 max에 저장하고
max값은 배열 0부터 시작하는 값이니깐 +1해서 return한다.
odd 또는 even 을 출력하시오.
void f(int k){ printf("%s\n", k%2==0?"even":"odd"); }
다음과 같이, 점수를 입력 받아 학점을 출력하시오.
90 점 이상 ~ 100점 이하 : A
80 점 이상 ~ 90점 미만 : B
70 점 이상 ~ 80점 미만 : C
60 점 이상 ~ 70점 미만 : D
60 점 미만 : Fchar grade(int k){ if(k >= 90) return 'A'; else if(k >= 80 && k<90) return 'B'; else if(k >= 70 && k<80) return 'C'; else if(k >= 60 && k<70) return 'D'; return 'F'; }
이 문제는 원의 넓이를 구하는 함수를 구현하는 문제입니다.
float circle(int r){ return 3.14f*r*r; }
한 정수 n을 입력받아 1부터 n까지 한 줄로 출력하시오.
#include <stdio.h> void f(int n) { if (n == 1) { printf("1 "); return; } f(n - 1); printf("%d ",n); } int main() { int n; scanf("%d",&n); f(n); return 0; }
n보다 하나 작은 수까지 출력해주라는 뜻이다.
2563 색종이
#include <stdio.h> int main() { int N; scanf("%d", &N); int paper[100][100] = {0}; for (int n = 0; n < N; n++) { int x, y; scanf("%d %d", &x, &y); for (int i = x; i < x + 10; i++) { for (int j = y; j < y + 10; j++) { paper[i][j] = 1; } } } int area = 0; for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { if (paper[i][j] == 1) { area++; } } } printf("%d\n", area); return 0; }
paper[100][100] 배열을 선언하여 도화지를 표현하고 모든 요소를 0으로 초기화합니다. 각 색종이의 위치를 입력받아 해당 위치에서 10×10 크기를 1로 채웁니다.
도화지 배열을 순회하며 값이 1인 칸의 개수를 세어 검은 영역의 넓이를 계산합니다.
한 정수 n을 입력받아 n층의 별 삼각형을 출력하시오.
#include <stdio.h> int n; void g(int k){ if(k <= 0) return; g(k-1); printf("*"); } void f(int k){ if(k <= 0) return; f(k-1); g(k); printf("\n"); } int main(){ scanf("%d",&n); f(n); }
main에서 n을 입력받는다. f함수로 이동한다. f함수는 1씩 늘어나면서 줄바꿈을 해주는 함수이다. 하지만 그전에 g함수를 호출해서 먼저 실행시켜야 한다. 왜냐하면 g함수가 을 출력해주는 역할이기 때문에 먼저 출력 을 사용해서 0부터 1씩 늘어남에 따라 출력해준다.
한 정수 n을 입력받아 n층의 수 삼각형을 출력하시오.
#include <stdio.h> void line(int start, int end) { if (start > end) return; printf("%d ", start); line(start + 1, end); } void triangle(int level, int n) { if (level > n) return; line(1, level); printf("\n"); triangle(level + 1, n); } int main() { int n; scanf("%d", &n); triangle(1, n); return 0; }
#include <stdio.h> int f(int n) { if (n == 0 ) return 1; return n * f(n-1); } int main() { int n; scanf("%d", &n); printf("%d", f(n)); return 0; }
자연수 N을 입력받아 N번째 피보나치 수를 출력하는 프로그램을 작성하시오.
#include <stdio.h> int p(int n) { if (n==1||n== 2) return 1; return p(n-1) + p(n-2); } int main() { int n; scanf("%d", &n); printf("%d", p(n)); return 0; }
어떤 10진수 n이 주어지면 2진수로 변환해서 출력하시오.
#include <stdio.h> void two(int n) { if (n==0) return; two(n/2); printf("%d", n%2); } int main() { int n; scanf("%d", &n); if (n==0) printf("0"); else two(n); return 0; }
함수 two에서 n==0을 통해 0일때는 2진수로 변환해도 2이기 때문에 예외처리를 해준다. n을 계속해서 2로 나눠주는 함수를 계속해서 호출해 나머지가 1이나 2로 나오게끔 해준다. printf문을 통해 2로 나눈 나머지를 출력한다.
길이 n이 입력되면 역삼각형을 출력한다.
#include <stdio.h> int n; void g(int k) { if (k<=0) return; printf("*"); g(k - 1); } void f(int k) { if (k<=0) return; g(k); printf("\n"); f(k-1); } int main() { scanf("%d",&n); f(n); return 0; }