공백이 포함되어 주어진 문자열에서 몇 개의 단어가 있는지 체크하는 단순한 문제 !
#include<iostream>
#include<string>
using namespace std;
int main() {
string val;
getline(cin, val);
int channel = 0; // 상태값이다. 이전에 1이였으면 지금까지 문자였었다는 얘기다.
int word_cnt = 0;
for (int i = 0; i < val.size(); i++) {
if (val[i] == ' ') {
if (channel == 1) {
channel = 0;
}
}
else {
if (channel == 0) {
channel = 1;
word_cnt++;
}
}
}
cout << word_cnt << endl;
return 0;
}
푸는 알고리즘은 생각보다 간단했다!
체크하는 변수를 하나 세워두고, 공백일 때 이걸 왔다갔다하면서 카운팅하는 방식으로 풀었다
cin 은 공백을 입력받을 때 문장에 끝이라고 생각하기 때문에, 이 문제와 같은 경우에는 getline(cin , 문자열) 이것을 활용해야했다.
자주 사용할 일은 없겠지만, 가끔 사용할 일이 있을테니 기억은 해두자!
getline(cin,문자열)