No. 2675

#include<stdio.h>
#include<string.h>
int main()
{
	int tc, i, re, j, k;
	char str[21];
	scanf("%d", &tc);
	for (i = 0; i < tc; i++) {
		scanf("%d %s", &re, str);
		for (j = 0; j < strlen(str); j++) {
			for (k = 0; k < re; k++) {
				printf("%c", str[j]);
			}
		}
		printf("\n");
	}

}

코드 설명 : 먼저 테스트케이스를 입력받고 그만큼 반복문을 돌려주도록 하였다. 반복문 내에서 반복할 횟수인 re와 문자 배열인 str을 입력받아주었다. 그 배열의 길이만큼 반복시키고 그 내에서 반복할 횟수인 re만큼 반복시켜 str[j]를 출력하도록 하였다. 이는 str의 원소를 앞에서부터 하나씩 re만큼 반복시킬 수 있도록 한 것이다. 그리고 반복해서 모두 출력을 완료하면 그 for문 밖에서 줄바꿈을 해주도록 하였다.

 

No. 2739

#include<stdio.h>
int main()
{
	int n, i;
	scanf("%d", &n);
	for (i = 1; i <= 9; i++) {
		printf("%d * %d = %d\n", n, i, n * i);
	}
}

코드 설명 : n단을 출력하기 위해 n을 입력받았다. n을 각 1에서 9까지 곱해주어야하기 때문에 for문으로 i가 1에서 9까지 n * i = n*i를 출력하도록 하였다. 

 

No. 2741

#include<stdio.h>
int main()
{
	int n, i;
	scanf("%d", &n);
	for (i = 1; i <= n; i++) {
		printf("%d\n", i);
	}
}

코드 설명 : 먼저 n을 입력받았다. 1부터 n까지 출력해야 하므로 for문으로 i가 1에서 n일때까지 i를 반복시켜 출력시켜주었다

No. 1546

#include<stdio.h>
int main()
{
	int arr[6], i, sum = 0;
	for (i = 0; i < 5; i++) {
		scanf("%d", &arr[i]);
		sum = sum + arr[i] * arr[i];
	}
	printf("%d\n", sum % 10);
}

코드 설명 : 입력된 각 수의 제곱을 모두 더해야 한다. 따라서 for문을 통해 배열에 5자리 수를 입력받은 후, 변수 sum에 각 배열의 원소의 제곱을 더해주었다. 그리고 sum을 10으로 나눈 나머지 값을 출력해주었다.

 

No. 2562

#include<stdio.h>
int main()
{
	int arr[10], i, max = 0, index;
	for (i = 0; i < 9; i++) {
		scanf("%d", &arr[i]);
		if (max < arr[i]) {
			max = arr[i];
			index = i;
		}
	}
	printf("%d\n%d\n", max, index+1);
}

코드 설명 : 9개의 수를 for문으로 입력받아주고 max의 초기값을 0으로 설정한 후 max보다 입력받은 배열의 원소가 크면 max에 그 원소값을 넣어주었다. 그리고 그 원소의 인덱스 값을 index 변수에 넣어주었다. 이 과정을 반복하여 최댓값과 그 수의 인덱스를 구하여 마지막에 출력해주었다. 이 때 for문에서 i가 0부터 시작했으므로 인덱스는 +1하여 나타내주었다.

 

No. 2577

#include<stdio.h>
int main()
{
	int cnt[10] = { 0, }, a, b, c, mul, j;
	scanf("%d %d %d", &a, &b, &c);
	mul = a * b * c;
	while (mul != 0) {
		cnt[mul % 10]++;
		mul = mul / 10;
	}
	for (j = 0; j < 10; j++) {
		printf("%d\n", cnt[j]);
	}
}

코드 설명 : 먼저 숫자 3개를 입력 받고 그 수들을 모두 곱한 값을 mul에 저장해주었다. cnt배열에 모든 원소의 초기값을 0으로 지정해주었고 인덱스 mul%10에 1을 추가해주었다. mul%10은 0~9에 해당되고 이 계산을 통해 각 숫자가 몇번 쓰였는지를 알 수 있다. 그리고 mul을 10으로 나눠주었고 이 과정을 mul이 0이 아닐때까지 반복하였다. 마지막에 cnt배열의 원소를 모두 출력하도록 하였다.

No. 1546

#include<stdio.h>
int main()
{
	int tc, i;
	double arr[1001], max = 0, avg = 0;
	scanf("%d", &tc);
	for (i = 0; i < tc; i++) {
		scanf("%lf", &arr[i]);
		if (max < arr[i]) max = arr[i];
	}
	for (i = 0; i < tc; i++) {
		avg += arr[i] / max * 100;
	}
	printf("%lf", avg / tc);
	return 0;
}

코드 설명 : 먼저 과목 개수인 tc를 입력받고 그만큼의 과목 점수를 for문으로 입력받는다. 이 때 과목 점수는 arr라는 배열에 저장해주었다. 최댓값을 찾아야하기 때문에 if문으로 max가 arr[i]보다 작으면 계속해서 max값을 업데이트 시켜주도록 하였다. for문으로 avg변수에 이 문제의 계산식을 이용하여 계산된 값을 계속하여 더해주었다. 그리고 이 값을 과목의 개수인 tc만큼 나누어 출력하도록 하였다.

 

No. 2438

#include<stdio.h>
int main()
{
	int n, i, j;
	scanf("%d", &n);
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= i; j++) {
			printf("*");
		}
		printf("\n");
	}
}

코드 설명 : n을 입력값으로 받아주고 그 값이 행의 값이 되기 때문에 for문으로 1에서 n만큼 반복시켜주었다. 그 안에 for문을 추가하여 열의 개수를 행과 동일한 값으로 주기 위해 i만큼 출력하도록 하였다. 그리고 행이 바뀔때마다 엔터를 쳐줘야하기 때문에 바깥 for문에 \n을 출력하도록 하였다.

 

No. 2439

#include<stdio.h>
int main()
{
	int n, i, j;
	scanf("%d", &n);
	for (i = 1; i <= n; i++) {
		for (j = n - 1; j >= i; j--) {
			printf(" ");
		}
		for (j = 1; j <= i; j++) {
			printf("*");
		}
		printf("\n");
	}
}

코드 설명 : n을 입력값으로 받아주고 그 값이 행의 값이 되기 때문에 for문으로 1에서 n만큼 반복시켜주었다. 그 안에 for문을 추가하여 행이 내려갈수록 앞에 존재하는 빈칸 수가 적어지기 때문에 n-1부터 i까지 감소하도록 해주었다. 별의 개수는 행과 동일하기 때문에 1부터 i까지 *을 출력하도록 하였다. 그리고 행이 바뀔때마다 엔터를 쳐줘야하기 때문에 바깥 for문에 \n을 출력하도록 하였다.

No. 1152

#include<stdio.h>
#include<string.h>
int main()
{
	char arr[1000001];
	scanf("%[^\n]", arr);
	int len, i = 0;
	len = strlen(arr);
	int cnt = 0;
	for (i = 0; i < len; i++) {
		if (arr[i] == ' ') cnt++;
	}
	cnt++;
	if (arr[0] == ' ') cnt--;
	if (arr[len-1] == ' ') cnt--;
	printf("%d", cnt);
}

코드 설명 : char 배열인 arr을 만들어주고 이를 입력받도록 했다. 이 때, 입력 형식을 %[^\n]이라고 했다. 이는 \n이 나오기 전까지 모든 문자를 입력받도록 해준다. strlen 함수를 이용하여 arr배열의 길이를 변수 len에 저장해주었다. for문으로 len만큼 반복시켜주어 배열의 원소가 빈칸일 때 cnt값을 증가시켜주도록 했다. 빈칸의 개수보다 단어의 개수가 항상 1개 더 많으므로 하나 더 추가해주었다. 만약 맨 앞이나 맨 뒤가 공백으로 시작하거나 끝난다면 cnt값을 감소시켜주도록 하였다. 그리고 이 cnt값을 마지막에 출력시켜주었다.

 

No. 1330

#include<stdio.h>
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	if (a == b) printf("==");
	else {
		if (a > b) printf(">");
		else printf("<");
	}
}

코드 설명 : a, b를 입력받아주고 두 수 값이 동일하면 '='을 출력시켜주고 동일하지 않으면 a>b일 경우는 '>', 아닐 경우는 '<'를 출력시켜주도록 하였다.

 

No. 1157

#include<stdio.h>
#include<string.h>
int main()
{
	char arr[1000001];
	int i, cnt[26] = { 0, }, j, len, max, index;
	scanf("%s", arr);
	len = strlen(arr);
	for (i = 'a'; i <= 'z'; i++) {
		for (j = 0; j < len; j++) {
			if (i == arr[j]) {
				cnt[i - 'a']++;
			}
		}
	}
	for (i = 'A'; i <= 'Z'; i++) {
		for (j = 0; j < len; j++) {
			if (i == arr[j]) {
				cnt[i - 'A']++;
			}
		}
	}
	max = cnt[0];
	for (i = 0; i < 26; i++) {
		if (max <= cnt[i]) {
			max = cnt[i];
			index = i; 
		}
	}
	int same = 0;
	for (i = 0; i < 26; i++) {
		if (max == cnt[i]) {
			same++;
		}
	}
	if (same > 1) printf("?");
	else printf("%c", index + 'A');

	return 0;
}

코드 설명 : 먼저 arr배열을 입력받았다. 이 배열의 길이를 len 변수에 저장해주었다. 이중 for문을 이용해서 arr배열의 원소가 a~z에 각각 해당되면 cnt배열에 i-'a'번째 인덱스에 1씩 증가시켜주었다. 이와 똑같이 A~Z에 각각 해당되면 i-'A'번째 인덱스에 1씩 증가시켜주었다. max 초기값을 cnt[0]으로 일단 지정하였고 for문으로 cnt배열의 원소들을 확인해주면서 가장 최댓값을 구하고 그 인덱스를 index 변수에 저장해주었다. 가장 많이 사용한 알파벳이 여러개일 경우를 구별하기 위해서 for문으로 max와 cnt[i]값이 동일할 때 same값을 증가시켜주도록 하였다. same값이 2이상일 경우 '?'를 출력해주고 아닐 경우에는 대문자를 출력시켜주어야 하기 때문에 index에 'A'값을 더한 값을 출력해주었다.

+ Recent posts