728x90
반응형

단어의 개수 성공

 
 

문제

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

입력

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

출력

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <string.h>
 
int main()
{
    char arr[1000000];
    scanf("%[^\n]",arr);
    int size = strlen(arr);
    int count = 0;
    for(int i=0; i<size; i++){
        if(arr[i]==' '){
            count++;
        }
        
    }
    if(arr[0]==' ') count--;
    if(arr[size-1]==' ') count--;
    //printf("%d\n",size);
   // printf("%d",count);
    printf("%d",count+1);
    
    
}
 
cs

%[^\n] 을 사용하면

엔터가 나올 때 까지 공백을 문자열로 받을 수 있다. 라고 한다

 

일단 입력 받은 문자열 전체에 공백이 몇개 있는 지 세었다.

그 후 문자열의 처음이나 끝에 공백이 있다면 count 에서 제거해주었다.

a   aba   abb   bbab   babb

위의 문자열에서 처럼 공백이 4개 있다면 단어는 5개가 있는 것을 확인할 수 있다.

즉 단어의 개수는 공백(처음과 끝을 제외한) 의 개수보다 1개 더 많다.

 

반응형

'백준 단계별로 풀어보기 > 문자열' 카테고리의 다른 글

백준 5622 다이얼  (1) 2022.10.03
백준 2908 상  (0) 2022.10.03
백준 1157 단어 공부  (0) 2022.10.02
백준 2675 문자열 반복  (0) 2022.10.02
백준 11720 숫자의 합  (0) 2022.09.28

+ Recent posts