본문 바로가기
프로그램/C언어 1000제

C언어 160제] 단어의 개수 구하기

by 건티 2024. 9. 10.
728x90

출처 : 반크_세계유산 창덕궁

 

문제]

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

입력
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.

출력
첫째 줄에 단어의 개수를 출력한다.

예제 입력 1 
The Curious Case of Benjamin Button
예제 출력 1 
6


예제 입력 2 
 The first character is a blank
예제 출력 2 
6


예제 입력 3 
The last character is a blank 
예제 출력 3 
6


출처 : 백준_1152번

 

참고풀이]

#include <stdio.h>
#include <string.h> //strlen():문자열의 문자개수 구하는 함수 

int main()
{
   char Str[1000000] = {'\0'}; //입력되는 문자열 저장할 배열변수 
   int count = 0;//단어의 개수를 세는 변수
   int i;//인덱스 또는 반복변수 
   int start;//문자열의 카운트 시작할 곳 지정변수 

 

   //문자열을 입력받는다.
   gets(Str);
   if(strlen(Str) <= 1000000)
   {
      //입력된 문자열 만큼 반복하면서 단어의 개수를 구한다.
      //입력된 문자열의 첫 문자가 빈칸인지를 체크한다.
      start = (Str[0] == ' ') ? 1 : 0;
      for(i = start;i < strlen(Str);i++)
         if(Str[i] == ' ') count++;
      //입력된 문자열의 끝 문자가 빈칸이 아니면 단어수를 센다. 
      if(Str[strlen(Str)-1] != ' ') count++;

      //결과출력
      printf("%d",count);
   }

   return 0;

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 가을

 

반응형

댓글