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