목차

  1. 환경
  2. 문제
  3. 접근법
  4. Library
  5. Code
  6. 정리
  7. Link

1. 환경

Editor: Microsoft Visual Studio Code
Compiler: C++20

2. 문제

Link1 BOJ1152

3. 접근법

알고리즘 분류

  • 구현
  • 문자열

공백의 개수를 이용하여 단어의 개수를 구한다.
단, 문제의 조건에 따라 처음과 마지막에 공백이 올 수 있다는 점에 유의한다.
또한 표준 입력인 cin을 사용하면 띄어쓰기를 기준으로 부분만을 입력받기에
줄 단위의 입력을 받을 수 있는 getline을 이용한다.
처음과 마지막 공백을 제외한 공백의 개수에 1을 더한 값을 구한다.

4. Library

bits/stdc++.h - Link2
(GNU C++ Standard Library Header - X)
(GCC Compiler Header - O)
string - Link3
string - std::getline - Link4

5. Code

#include <bits/stdc++.h>

using namespace std;

int res;
string str;

void input();
void func();
void output();

int main(void)
{
    input();
    func();
    output();
}

void input()
{
    getline(cin, str);
}

void func()
{
    if(str == " ")
        return;
    else
    {
        // Ver.Clean
        for(int i = 0; i < str.size(); i++)
            if((i != 0 && i != str.size() - 1) && str.at(i) == ' ')
                res++;
        // Ver.Fast
        /*
        for(int i = 0; i < str.size(); i++)
        {
            if((i == 0 || i == str.size() - 1) && str.at(i) == ' ')
                continue;
            else if(str.at(i) == ' ')
                res++;
        }
        */
        res++;
    }
}

void output()
{
    cout << res << '\n';
}

6. 정리

입력 방식과 문자열 처리에 신경써주면 되는 문제였다.

1. BOJ1152 - 단어의 개수
https://www.acmicpc.net/problem/1152
3. bits/stdc++.h
https://gcc.gnu.org/onlinedocs/gcc-4.8.0/libstdc++/api/a01541_source.html
3. string
https://www.cplusplus.com/reference/string/
4. std::getline
https://www.cplusplus.com/reference/string/string/getline/
5. Cplusplus.com
https://www.cplusplus.com/reference/