영어 대소문자와 공백으로 이루어진 문자열이 주어진다.
이 문자열에 있는 단어의 갯수를 출력하시오.
같은 단어라도 카운트 한다.
입력:
1,000,000 자 이내의 문자열, 단어는 공백으로 구분된다.
공백 문자로 시작되거나 끝날 수도 있다.
출력:
단어 개수
입력/출력
--입력--
The Curious Case of Benjamin Button
--출력--
6
--입력--
The first character is a blank
--출력--
6
--입력--
The last character is a blank
--출력--
6
문제풀이+해설
문자열에서 단어는 공백문자로 구분되기 때문에 공백문자의 개수에 +1을 해주면 단어개수가 된다.
주의 할 것은 첫글자와 마지막 글자의 공백은 무시해야 한다.
처음과 마지막 공백은 언어에 따라 trim 함수가 지원되지만 여기서는 루프를 돌려서 직접 처리하도록 구현하겠다.
이문제의 핵심사항 중 하나는 공백문자를 포함한 문자열을 입력받는 방법이다.
C의 scanf() 나 C++ std::cin 은 기본적으로 공백이나 엔터키 까지 끊어서 입력 받는다.
소스에 공백포함해서 입력받는 설명을 해두었으니 참고바람.
C++ 에서 공백 포함한 문자를 입력 받으려면,
getline(cin, s)
또는
cin.getline(s, 최대길이,'\n')
으로 받을 수 있다.