백준 1152번 - 단어의 개수 c언어

김대일·2021년 4월 22일
3

영어 대소문자와 띄어 쓰기만으로 이루어진 문자열을 받았을때 몇개의 단어가 사용되었는지 체크하는 프로그램.

주의사항

  • 문자의 길이는 1000000을 넘지 않는다
  • 입력받는 문자의 처음과 끝에 공백이 있을수도 있다.
  • 띄어쓰기는 한개로 구분한다.
  • 공백이 연속해서 나오는 경우는 없다.


#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"] 에 대한 이해도 어느정도 했다.
확실히 조금씩 풀다보니 어떻게 접근해야할지 조금씩 감이 오고 있는것 같다.

profile
도비코딩

1개의 댓글

comment-user-thumbnail
2021년 5월 4일

우아 멋져여~

답글 달기