영어 대소문자와 띄어 쓰기만으로 이루어진 문자열을 받았을때 몇개의 단어가 사용되었는지 체크하는 프로그램.
#include <stdio.h>
#include <string.h>
int main(void){
char arr[1000000];
int i,cnt=0,len;
scanf("%[^\n]",arr); // ["%^\n"]은 엔터가 나올때까지 문자열로 받는다는 말이다( 공백도 포함 )
len = strlen(arr); // 받은 값을 len 변수에 넣어주었다.
if (len == 1){ // 만약 공백 하나만 입력되었을때를 위한 if 문 처리를 해주어서 0이 출력되게 함
if( arr[i] == ' '){
printf("0\n");
return 0;
}
}
for(i = 1; i<len-1; i++){ // 공백의 갯수로 단어의 갯수를 체크 하기 때문에 처음과 끝에 공백이 들어올 경우를 위해 int를 1 로 지정하고 끝나는 지점은 -1 을 해주어 처음과 끝의 공백을 제거해주었다.
if( arr[i] == ' '){
cnt++;
}
}
printf("%d", cnt+1); // 공백의 갯수로 단어의 갯수를 체크했기 때문에 +1로 출력해주었다. ( ex - 단어가 4개가 들어가려면 공백이 세개 )
return 0;
}
이번 문제를 풀면서 strlen의 대한 확실한 이해를 했고, ["%^\n"] 에 대한 이해도 어느정도 했다.
확실히 조금씩 풀다보니 어떻게 접근해야할지 조금씩 감이 오고 있는것 같다.
우아 멋져여~