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