Super Kawaii Cute Cat Kaoani
본문 바로가기
✍️ Algortihm/C++

백준 1152번 단어의 개수 C++

by wonee1 2024. 4. 8.
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