쌓고 쌓다

[백준] 단어의 개수 1152번 C++ 풀이 본문

알고리즘/백준

[백준] 단어의 개수 1152번 C++ 풀이

승민아 2022. 6. 22. 14:01

https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

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

www.acmicpc.net

 

전체 코드

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
	string str;
	int res = 0;
	bool flag = false;
	getline(cin, str);
	for (int i = 0; i < str.length(); i++)
	{
		if (((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')) && flag == false)
		{
			res++;
			flag = true;
		}
		else if(str[i]==' ')
			flag = false;

	}
	cout << res;
}

 

알파벳이 등장하면 단어의 시작으로 단어의 개수(res)를 +1 해줄 건데 

flag(앞전에 단어가 아닌 공백이 존재함)가 false여야지 res를 1 늘려줄 겁니다.

이렇게 구현하기 위해 공백을 만나면 flag를 false로 바꾸는 부분과 단어를 만나면 res를 1 늘려주고 flag를 true로 바꾸는

연산이 필요합니다.

Comments