[백준] 1152번. 단어의 개수
https://www.acmicpc.net/problem/1152
공백을 포함해서 문자열 입력 받기
참고 자료: https://kyu9341.github.io/C-C/2020/01/17/C++getline()/
istream& getline (istream& is, string& str, char delim);
istream& getline (istream& is, string& str);
입력을 받다가 delimiter(구분자)를 만나면, 그 문자는 cin 버퍼에 저장되지 않은 채로 입력이 종료된다. 그리고 문자열 끝에 널문자('\0')가 붙는다.
문제 풀이
str::string도 c언어 스타일 문자열과의 호환성을 위해 문자열 끝에 널문자를 붙인다.
https://hashcode.co.kr/questions/5777
// 1152번. 단어의 개수
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
getline(cin, str);
int cnt = 0;
int n = str.length();
// i=0 i=1
// 공백 영문자
// 영문자 공백
// 영문자 영문자
// 공백 공백 이렇게 연속될 수 없는 상황에서
// "공백이 나왔다"는 것은 첫번째 원소를 제외하고는
// "바로 앞에 영문자가 있었다"는 거니까 단어 개수 증가시키기!
// 영문자를 만날 때 카운트를 증가시키면 단어 개수보다 많아지니까
// 공백을 기준으로 카운트를 증가시킨다.
for (int i = 1; i < n; i++) {
// 다시 공백이 나오면 cnt++
if (str[i] == ' ') {
cnt++;
}
}
// 마지막이 영문자로 끝나면 cnt++ (공백으로 끝난 경우 이미 cnt++한 상태)
if (str[n - 1] != ' ')
cnt++;
cout << cnt;
return 0;
}
Author And Source
이 문제에 관하여([백준] 1152번. 단어의 개수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jxlhe46/백준-1152번.-단어의-개수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)