728x90

풀이과정
0. 문자열과 단어를 셀 cnt 변수를 선언한다.
1. 공백이 포함된 문자열을 받기 위해 getline함수를 사용한다.
2. 반복문을 사용해서 공백이 나올 때마다 cnt 변수를 1 증가시킨다.
3. 조건에 나온 '문자열은 공백으로 시작하거나 끝날 수 있다'라는 점을 고려하여 앞 뒤 공백문자가 나오면,
cnt 변수를 1 감소시킨다.
💡중요포인트
getline 함수란?
getline(istream& is, string str);
getline(istream& is, string str, char dlim);
getline() 함수는 string 타입의 변수에 문자열을 입력 받는다.
getline(cin, str)과 같이 사용되며, cin으로부터 입력을 받아 변수 str에 저장한다.
- string형을 받을 경우에 사용 가능, 공백이 포함된 문자열을 입력받을 수 있음.
- 최대 문자 수를 입력하지 않아도 되며, 지정한 dlim(구분자)까지 문자열을 입력받아 string에 저장한다.
- 표준 입력 버퍼에 개행문자 '\n'이 남아있기 때문에, getline() 함수 앞에 cin.ignore() 함수를 이용해 버퍼를 비워주어야 한다.
cin.getline(char* str, streamsize n);
cin.getline(char* str, streamsize n, char dlim);
char*형의 문자열을 받을 경우에 사용 가능, string 형을 사용하면 오류 발생
문자열의 끝에는 NULL 문자인 '\0'이 자동 삽입된다.
- dlim(제한자)을 지정한다면, dlim 문자 직전까지 읽어 str에 저장한다
- 별도로 dlim을 지정하지 않는다면, 개행문자(줄바꿈, '\n')로 인식한다.
코드
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
int cnt=1;
getline(cin,s);//공백까지 같이 입력받기
for(int i=0;i<s.length();i++){
if(s[i]==' ')cnt++;
}
if(s[0]==' ')cnt--; //첫글자가 공백이면 감소
if(s[s.length()-1]==' ')cnt--; //끝이 공백이면 감소
cout<<cnt;
return 0;
}

728x90
'✍️ Algortihm > C++' 카테고리의 다른 글
[백준] 10789번 세로읽기 c++ (0) | 2024.04.13 |
---|---|
백준 2908번 상수 C++ (0) | 2024.04.08 |
[백준] 10809번 알파벳 찾기 C++ (0) | 2024.04.04 |
[백준] 11720번 숫자의 합 C++ (0) | 2024.04.04 |
[백준] 9086 문자열 C++ (0) | 2024.04.04 |