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

 

 

그룹단어가 몇개인지 찾는 문제이다. 같은 문자가 연속해서 나오다가 끊기고 다시 나오면 그룹문자가 아니기 때문에 map을 통해 갯수를 세고 이게 전에 나왔던 개수이면 false를 반환 만약 순회가 끝나면 그룹문자이기 때문에 true를 반환해주자.

 

정답코드

#include "iostream"
#include "string"
#include "map"
using namespace std;

bool isGroup(string s)
{
	map<char, int> smap;
	char prechar = s[0];
	smap[prechar]++;
	for (int i = 1; i <s.length(); i++) \
	{
		if (s[i-1] != s[i] && smap[s[i]] > 0) return false;
		else smap[s[i]]++;
	}
	return true;
}
int main()
{
	int n, cnt = 0;
	string s;
	
	cin >> n;

	for (int i = 0; i < n; i++)
	{
		cin >> s;
		if (isGroup(s)) cnt++;
	}

	cout << cnt;
	return 0;
}

+ Recent posts