[백준] 1152번 단어의 개수 - C++

potatoj11n·2024년 1월 20일

백준

목록 보기
5/36

🌱문제 설명

1152번 단어의 개수

문제

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

입력

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.


출력

첫째 줄에 단어의 개수를 출력한다.

풀이

# include <iostream>
# include <string>
using namespace std;
 
int main(){
    string arr;
//입력으로 받을 문자열을 저장할 문자열 변수
    int n = 1; //단어 개수 저장
    getline(cin, arr);
    //공백을 포함한 문자열을 받아서 변수에 저장
    for (int i = 0; i < arr.length(); i++){
        if (arr[i] == ' '){
            n++;
        }
    }
 //문자열을 반복문으로 각 문자 검사, 공백이면 단어 개수 증가
    if (arr[0] == ' ') {
        n--;
    }
//문자열의 첫번째 문자가 공백이면 단어 수 감소
    if (arr[arr.length() - 1] == ' '){
        n--;
    }
//문자열이 끝날때 마지막 문자가 공백이면 단어 수 감소 
    cout << n;
    return 0;
}

코드 설명

// 주석 참고

❣️문제 설명
주어진 문자열에 있는 공백을 세는 문제

🤔 생각해야할 점

  • 주어진 문자열의 공백을 반복문으로 문자를 확인하는 방식
  • 문자열이 공백이면 단어 갯수를 증가시키고 문자열이 시작될 때 첫 문자가 공백이라면 단어 갯수를 감소시킨다.
  • 문자열이 끝날때 마지막 문자가 공백이면 단어 갯수를 감소 시킨다.

getline(cin, arr);
: 공백을 포함한 문자열을 입력받을 때는 getline(cin, 문자열명 )을 사용한다.

0개의 댓글