영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.
첫째 줄에 단어의 개수를 출력한다.
The Curious Case of Benjamin Button
The first character is a blank
The last character is a blank
6
6
6
문자열을 공백을 포함하여 getline으로 받아온 후, 반복문으로 공백을 만나는 순간마다 단어 개수를 카운트함.
첫번째 단어는 미리 카운트해놓고 그 이후 단어 개수를 카운트한 후 첫 문자와 마지막 문자가 공백인 경우를 차감.
#include <iostream>
using namespace std;
int main(void) {
string str;
getline(cin, str);
int count = 1;
for (int i = 0; i < str.length(); i++)
if (str[i] == ' ') count++;
// 첫 문자가 공백일 때
if (str[0] == ' ') count--;
// 마지막 문자가 공백일 때
if (str[str.length()-1] == ' ') count--;
cout << count << "\n";
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int count = 1;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ' ') count++;
}
// 첫 문자가 공백일 때
if (str.charAt(0) == ' ') count--;
// 마지막 문자가 공백일 때
if (str.charAt(str.length()-1) == ' ') count--;
System.out.println(count);
}
}