알고리즘 풀이/백준

[1316] 백준 : 그룹 단어 체커(C++)

데롱디롱 2020. 4. 24. 14:52
728x90

* 접근 방법
- 알파벳으로 키로 갖는 map을 생성
- 처음 나오는 알파벳은 map에 삽입 (key의 존재 유무만 중요하기 때문에 value값은 상관 없음)
- 이미 존재하는 알파벳의 경우, 바로 앞에 있지 않으면 그룹단어 아니므로 false리턴

#include <iostream>
#include <map>
#include <string>
using namespace std;

bool check(string s)
{
	map<char, int> m;
	bool result = true;
	for (int i = 0; i < s.size(); i++)
	{
		if (m.count(s[i]) == 0)
		{
			m.insert(make_pair(s[i], 1));
		}
		else {
			if (s[i - 1] != s[i])
				result = false;
		}
	}
	return result;
}

int main()
{
	int T = 0, num = 0;
	cin >> T;
	for (int i = 0; i < T; i++)
	{
		string s;
		cin >> s;
		if (check(s)) num++;
	}
	cout << num;

	return 0;
}