문제설명
소스코드
#include<iostream>
#include <string>
using namespace std;
int main()
{
string input; int count = 0;
getline(cin, input);
if (input.empty() || ((input[0] == ' ') && input.length() == 1))
{
//문자열이 없거나 있어도 공백을 포함한 1글자라면 0을 출력한다.
cout << 0;
return 0;
}
int npos;
npos = input.find_first_not_of(' ');
input.erase(0, npos); //왼쪽 공백 제거
npos = input.find_last_not_of(' ');
input.erase(npos + 1); //오른쪽 공백 제거
for (int i = 0; i < input.length(); ++i)
{
if (input[i] == ' ') ++count; //공백 카운트한다.
}
cout << ++count; //공백 +1이 단어의 개수이다.
}
풀이
- cin으로 문자열을 받지않고 getline()으로 받는다.
- 양쪽 공백 제거
- 문자 사이의 공백 수 +1이 단어의 개수이다.
- 문자열이 없거나 있어도 공백을 포함한 1글자라면 0을 출력한다.
왜 cin으로 받으면 안되는 것이고, getline()으로 받아야하는지 모르겠다. 나중에 알아봐야겠다.
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 5단계 - 5622번 문제 (0) | 2023.04.05 |
---|---|
[C++] 백준 5단계 - 2908번 문제 (0) | 2023.04.05 |
[C++] 백준 5단계 - 2675번 문제 (0) | 2023.04.03 |
[C++] 백준 5단계 - 10809번 문제 (0) | 2023.04.03 |
[C++] 백준 5단계 - 11720번 문제 (0) | 2023.04.03 |