#include <iostream>
#include <string>
using namespace std;
int main()
{
string word;
int count = 1;
getline(cin, word);
for (int i = 0; i < word.length(); i++)
{
if (word[i] == ' ')
count++;
}
if (word[0] == ' ')
count--;
if (word[word.length()-1] == ' ')
count--;
cout << count;
}
getline(cin,string)
함수를 이용해 공백이 포함된 문자열을 받고,.length()
함수를 이용해 문자열의 길이 안에서 단어의 개수를 센다.
- 문장을 입력받을
string word
와 단어의 개수를 셀int count
를 만든다.string word; int count = 1; /*이 때 count는 1부터 시작해야 한다. 단어의 개수의 기준은 단어 사이의 공백인데, 단어가 한단어일 경우, 공백이 없기 때문이다.*/ getline(cin, word);
- 문자열의 길이 안에서 단어 사이의 공백은 세어준다.
for (int i = 0; i < word.length(); i++) { if (word[i] == ' ') count++; }
- 문자열의 맨앞이나 맨뒤에 공백이 있을 경우
count
에서 빼준다.if (word[0] == ' ') count--; if (word[word.length()-1] == ' ') count--; cout << count;
count
를 출력한다.
모든 문제가 풀이를 알고나면 별거 아닌 것 처럼 보이긴 하지만 이번 문제는 특히 그게 심했다. 문법에 대한 무지를 하드코딩으로 풀어내려고했던 집착때문에 그랬던 것 같다. 문자열의 길이를 세는 함수 .length()
를 어떻게하면 내가 직접 구현할 수 있을까 고민이 좌절되었다는 점에서 스스로에게 좀 실망했다. 여전히 문자열에 대한 이해도가 부족하다는 증거다. 다음에 문자열만 정리하는 포스팅을 올려봐도 좋겠다. 그러나 함수를 이용하는 것도 경제적인 코딩을 위한 훈련이 아닐까 위로해본다.