Level: Level 1
풀이: 미참고
Language: C++
프로그램: Visual Studio 2017
문제설명
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
입력/출력
입력
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.
입력 예
The Curious Case of Benjamin Button
출력
첫째 줄에 단어의 개수를 출력한다.
출력 예
6
풀이
- 공백을 포함한 문자열을 받아야 하기 때문에, getline 함수 사용
- getline 함수: string 헤더 파일에 들어있고, 입력 cin을 name에 저장하는 것
- 문자열에 연속된 공백은 없다.
- 문자열의 맨 앞과 맨 뒤에 공백인 경우는 단어로 생각하지 않기 때문에 카운트를 1씩 줄여준다.
Code
#include <iostream>
#include <string> //getline 함수 사용
using namespace std;
int main(){
int result = 0; // 단어의 개수
string name; //문자열
getline(cin, name); //strings에 문자열 입력받기
result = 1;
//빈칸이 존재하면 하나씩 증가
for (int i = 0; i < name.length(); i++) {
if (name[i] == ' ') {
result++;
}
}
if (name[0] == ' ') //맨 처음
result--;
if (name[name.length() - 1] == ' ') //맨 마지막
result--;
cout << result << '\n';
return 0;
}
ScreenShot
'Programming > Programming 풀이' 카테고리의 다른 글
[Baekjoon] 2920번 음계(C++) (446) | 2021.01.28 |
---|---|
[Baekjoon] 2675번 문자열 반복(C++) (326) | 2021.01.27 |
[Baekjoon] 14659번 한조서열정리하고옴ㅋㅋ(C++) (455) | 2021.01.19 |
[Baekjoon] 11497번 통나무 건너뛰기(C++) (408) | 2021.01.18 |
[Baekjoon] 16435번 스네이크버드(C++) (318) | 2021.01.14 |