별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 단어는 띄어쓰기 하나로 구분된다고 생각한다.

 

 

입력

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문장이 주어진다. 이 문장의 길이는 1,000,000을 넘지 않는다.

 

 

출력

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

 

 

예제 입력

 The Curious Case of Benjamin Button

 

예제 출력

 6

 

 

힌트

 

 

출처

· 문제를 만든 사람: author5



알고리즘 분류

· 문자열 처리

 

 

코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string.h>        // strlen()
 
#define N 1000000
 
using namespace std;
 
int main()
{
    char sen[N];
    int len = 0, flag = 0;
 
    cin.getline(sen, N);    // 공백을 포함한 문장의 입력 받기.
    len = strlen(sen);
 
    if (sen[0!= ' ') flag++;    // 처음 부분에 공백이 없을 경우 
    for (int i = 1; i < len; i++) {
        if ((sen[i] != ' '&& (sen[i - 1== ' ')) flag++;    // '_(단어)'인 경우
    }
 
    cout << flag << endl;
    return 0;
}
cs




간단해 보이지만, 생각보다 어려웠던 문제. (정답률이 20% 정도인 것을 보면 알 수 있다.)

핵심은 처음 부분에 공백이 없을 경우, 그리고 '공백+단어'인 경우가 있을 경우 단어의 수를 나타내는 변수를 하나씩 증가시켜주면 된다.

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖