문제
영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문장이 주어진다. 이 문장의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다.
예제 입력: The Curious Case of Benjamin Button
문제 해석
The Curious Case of Benjamin Button
단어-단어 사이 공백은 1개로 제한
앞 뒤 공백도 1개 밖에 안됌
공백 The Curious Case of Benjamin Button 공백(O)
공백 공백 The Curious Case of Benjamin Button 공백 공백 (X)
코드 및 풀이방식
The Curious Case of Benjamin Button
단어-단어 사이 공백은 1개로 제한
앞 뒤 공백도 1개 밖에 안됌
1. 문자열의 length만큼 for문을 진행, string은 #include <string> 필요
2. The / Curious / Case / of / Benjamin / Button
띄어쓰기(/)가 5개면 단어가 6개
단어의 수=띄어쓰기 수+1
단어의 개수인 num을 1로 지정해 두고
띄어쓰기가 발견될 때 마다 더 하면 단어의 개수가 된다.
<주의 사항>
앞, 뒤 공백을 고려해야 하는데 앞에 또는 뒤에 공백이 있으면 제거 해주면 된다.
<코드>
#include <iostream>
using namespace std;
#include <string>
int main(){
string str;
int num = 1;
getline(cin, str);
// cin.getline()은 공백 가능.cin은 불가능
for (int i = 0; i < str.length(); i++){
if (str[i] == ' ')
{ num++; }
}
if (str[0] == ' ')
{
num--;
}
if (str[str.length() - 1] == ' ')
{
num--;
}
cout << num << endl;
}
'알고리즘' 카테고리의 다른 글
13. 가장 많이 사용된 자릿수 (0) | 2020.04.03 |
---|---|
STL과 Vector&iterator (0) | 2018.09.02 |
[2440/2441] 별찍기 3-4 (0) | 2018.05.11 |
[2438/2439] 별찍기 1-2 (0) | 2018.05.11 |
[2839] 설탕 배달 (0) | 2018.05.09 |