백준 1152 <단어의 개수> C++

Kkackit·2021년 12월 30일
0

문자열로 풀지, 그냥 String을 쓸지 고민을 좀 한 문제.
문자열로 푸는게 연습이 더 될 것 같으므로
다음에 문자열로 한번 더 풀어봐야겠다.

C++에서
cin으로 입력받는건 공백을 포함시키지 못한다.
그러므로 getline(cin, 'String 이름'); 을 사용하면
공백까지 포함시켜서 입력받을 수 있다.

공백을 입력받은 후
공백이 아닌 문자를 입력받았으면, 다음 공백이 등장할때마다 결과 값을 하나씩 더해줬다.

마지막에 공백이 없는 경우가 있기때문에 예외처리해주었으며

마지막 공백이 2개 이상으로 나오면 예외처리 조건문이 이를 모두 카운팅하기때문에 공백이 연속으로 나오면 세지 않도록 조건을 작성했다.

#include <iostream>

using namespace std;


int main(void)
{
    string input_Sentence;
    int counter = 0;
    int result = 0;
    
    bool check_flag = false;

    getline(cin, input_Sentence); // 공백 포함으로 문자열 받기

    int len_Sentence = input_Sentence.length();
        
    for (int i = 0; i < len_Sentence; i++)
    {
        if(input_Sentence[i] != ' ')
        {
            check_flag = true;
        }

        if(check_flag == true)
        {
            if (input_Sentence[i] == ' ')
            {
                result++;
                check_flag == false;
            }
        }
    }

    if(input_Sentence[len_Sentence] != ' ' && input_Sentence[len_Sentence - 1] != ' ')
    {
        result++;
    }
    
    cout<<result<<endl;

}

0개의 댓글