[BOJ] #1152 - 단어의 개수

👻 단어의 개수

👉🏻 문제 보러가기 👈🏻


🌱 문제

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

  • 시간 제한 : 2초
  • 메모리 제한 : 128 MB

🌱 입력

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


🌱 출력

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


🌱 예제


🪐 입출력 1

  • 입력
    The Curious Case of Benjamin Button
    
  • 출력
    6
    

🪐 입출력 2

  • 입력
     The first character is a blank
    
  • 출력
    6
    

🪐 입출력 3

  • 입력
    The last character is a blank 
    
  • 출력
    6
    

👻 풀이

#include <iostream>
#include <string>
using namespace std;
int main()
{
    ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    // 단어의 개수 
    string s;
	  getline(cin, s);
	  int w = 0;
	  for (int i = 0; i < s.size(); i++)
  	{
	  	if (i > 0 && s[i] == ' ') w++;
		  if (i == s.size() - 1 && s[i] != ' ') w++;
	  }
	  cout << w;
    return 0;
}
  • 시간 : 8 ms
  • 메모리 : 3680 KB

👻 글을 마치며

공백이 포함되어 있기 때문에 단어를 줄 단위로 받고 반복하며 공백을 기준으로 단어 카운트를 해주었다. 단, 문장의 첫 위치에 공백이 들어가있거나 마지막 위치에 공백이 들어갈 수도 있기 때문에 첫 번째와 마지막 번째의 예외처리만 추가로 붙여주어서 쉽게 구현할 수 있었다.


소스코드 보러가기

Categories:

Updated:

Leave a comment