소스코드
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
int cnt = 0; //단어의 개수
getline(cin, s); //getline(cin, str) :공백이 포함된 문자열 입력
if(s.length() == 1 && s[0] == ' '){
cout << 0 << endl;
return 0;
}
for(int i = 0; i < s.length(); i++){
if(s[i] == ' '){
if(i == 0 || i == s.length()-1){
continue;
}
cnt++;
}
}
cout << cnt+1 << endl;
return 0;
}
- 변수
string s : 입력받을 문자열
int cnt : 단어의 개수
- 알고리즘
- 공백이 포함된 문자열을 입력받기 위해서 getline(cin,s)를 사용해서 입력을 받는다.
- 입력받은 문자열이 공백으로만 이루어진 (' ')의 모습이면 단어가 없기 때문에 제외해준다.
- 공백을 만나면 가장 처음 공백과 마지막 공백이 아닌 경우에 단어의 개수를 늘려준다.
- 마지막 공백 다음에 나오는 단어의 개수를 더해주어야 함으로 cnt+1을 출력한다.
- 배운점
getline(cin,s) : 공백이 포함된 문자열을 입력받을 때 사용
- 아쉬운점&느낀점
알고리즘을 짜는 부분자체는 쉬웠지만 반례를 찾는 고민을 더 해봤으면 좋겠다! 나중에는 반례도 직접 찾아서 풀 수 있도록! 반례를 가장 쉽게 찾는 방법은 최대한 다양한 테스트케이스를 시험해보는 수 밖에 없다. 그 과정을 귀찮게 생각하지 않고 반례를 직접 찾아 해결하면 실력도 성취감도 둘 다 상승할 수 있을거 같다!