Information Security ˗ˋˏ ♡ ˎˊ˗

Programming/Programming 풀이

[Baekjoon] 1152번 단어의 개수(C++)

토오쓰 2021. 1. 25. 19:20

www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한

www.acmicpc.net

 

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