코딩테스트/programming_C++
baekjoon #1152_단어의 개수_c++
prometedor
2021. 10. 26. 01:56
- string 라이브러리의 getline()
- 원하는 구분자(delimiter)에 도달할 때 까지 모든 문자열을 입력 받아 하나의 string 객체에 저장
getline(입력스트림 오브젝트, 문자열을 저장할 string객체, 종결 문자);
ex) getline(cin, str);
#include<iostream>
#include<string>
int main() {
std::string str;
std::getline(std::cin, str,'\n');
int cnt = 1; // 문자열이 공백이 아닌 단어로 바로 시작 할 경우 단어의 개수는 1부터 시작
for (int i = 0; i < str.length(); i++) {
if (str[i] == ' ')
cnt++;
}
if (str[0] == ' ') // 문자열 첫 부분에 공백이 있을 경우
cnt--;
if (str[str.length() - 1] == ' ')
cnt--;
std::cout << cnt;
}
문자열은 공백으로 시작하거나 끝날 수 있다고 했으므로, 문자열 앞에 공백이 있을 경우와 문자열 뒤에 공백이 있을 경우로 나누어 비교
ex)The Curious Case of Benjamin Button
The 가 cnt = 1 (단어 1개)
-> 공백의 개수만큼 cnt를 증가시키면 단어의 개수를 알 수 있음
공백이 5개이므로 cnt = 1에서 5번 증가 => cnt = 6
결국, 단어는 6개임을 알 수 있음
- 시작이 공백일 경우, 문자열 처음이 단어가 아니므로 cnt를 1 감소시켜줘야 함
- 끝이 공백일 경우, 배열의 크기에서 1을 뺀 위치는 문자열의 가장 마지막 문자가 공백으로, 단어가 아니므로 cnt를 1 감소시켜줘야 함