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