1152 1157 1330번
<1152>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char sts[1000000];
scanf("%[^\n]s", sts);
int count = 0;
if (isspace(sts[0]) != 0) {
for (int k = 1; k < strlen(sts)+1; k++) {
if (isspace(sts[k]) != 0) count = count + 1;
}
if (isspace(sts[strlen(sts)-1]) != 0) count=count-1;
printf("%d", count + 1);
}
else if (isspace(sts[0])== 0) {
for (int k = 0; k < strlen(sts); k++) {
if (isspace(sts[k]) != 0) count = count + 1;
}
if (isspace(sts[strlen(sts) - 1]) != 0) count = count - 1;
printf("%d", count + 1);
}
return 0;
}
문장을 담을 배열 sts를 선언하고 공백까지 스캔할 수 있게 %[^\n]s 형식으로 받는다. 다음으로 공백이 있는지 확인할 수 있는 isspace를 이용하여 해당 인덱스가 공백이면 단어 개수를 0으로 초기화한 count 변수에 1을 더하고 최종적으로 count+1을 출력하는 것이 기본 베이스이다. 하지만 맨 앞과 맨 뒤의 공백이 있어도 이것을 무시하고 단어의 개수만 출력해야 하므로 일단 맨 앞이 공백일 때 문자 카운트를 인덱스 1부터 세서 count를 세고, 마지막 문자(공백까지 입력한 sts)가 공백이라면 단어 개수를 1개 빼준다. 그리고 처음 문자가 공백이 아닌 다른 경우에서 else if로 인덱스 0부터 시작해서 count에 1씩 더한다. 그리고 이런 경우이면서 마지막 문자가 공백이라면 1도 빼준다. 그러고 나서 두가지 케이스 모두 count에 1을 더해 최종 단어의 개수를 프린트한다.
- isspace : 공백이라면 0이 아닌 수 반환. 공백이 아닌 다른 문자라면 0 반환.
<1157>
#include <stdio.h>
#define MAX 1000001
int main() {
char word[MAX];
int max_index = 0;
int max;
int result[26] = { 0, };
scanf("%s", word);
for (int k = 0; word[k]!='\0'; k++) {
if (word[k]<97) {
word[k] += 32;
result[word[k] - 97]++;
}
max = result[0];
for (int k = 1; k < 26; k++) {
if (max < result[k]) {
max = result[k];
max_index = k;
}
else if (max == result[k] && result[k] != 0) {
max_index =-1;
}
}
if (max_index != -1) printf("%c", 65 + max_index);
else printf("?\n");
}
}
입력한 문자열을 저장할 배열을 선언해준다. 그리고 대소문자 상관없이 일단 대문자이면 아스키코드값에 32를 더해준다. 그리고 이때 각 알파벳마다 몇번 나왔는지 저장하는 배열을 만들어 개수를 저장한다. 그러고 max 변수를 이용하여 가장 많이 나온 수의 인덱스(가장 많이 나온 알파벳)을 찾는다. 이때 나오지 않아 0으로 초기화 되어 많이 사용된 알파벳이 여러개로 인식될 경우 예외처리 해주고 마지막으로 출력을 한다.
코드를 짜봤고 답이 잘 안나와 검색을 해봐서 수정을 해봤지만 결국 실패를 했다...
<1330>
#include <stdio.h>
int main() {
int n1, n2;
scanf("%d %d", &n1, &n2);
if (n1 < n2) printf("<");
else if (n1 == n2) printf("==");
else printf(">");
return 0;
}
두 수를 비교할 것이므로 정수형 n1 n2를 선언한다. 그리고 이 두 수를 scanf로 스캔 받고 n2가 n1보다 크거나 같거나 작을 경우를 if else-if else문으로 구분해 각각의 상황에 대해 프린트문으로 결과를 출력한다.