본문 바로가기

백준

C++[백준] 1316번 그룹 단어 체커

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

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

 

솔루션


문자열을 입력을 받고,

해당 알파벳들을 방문처리를 한다.

 

만약 특정 지점에서 이미 방문 된 알파벳이 나왔는데, 그 알파벳이 이전 알파벳과는 다르다면 그룹 단어의 갯수를 줄인다.

 

각 테스트 케이스에서 그룹단어가 아닌 개수를 빼고 난 나머지를 출력한다.

 

 

코드


#include <iostream>
using namespace std;


int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	int tc;
	cin >> tc;
	int cnt = tc;
	while (tc--) {
		bool is_visit[27] = { false, };
		
		string str;
		cin >> str;
		is_visit[str[0] - 'a'] = true;
		for (int i = 1; i < str.size(); i++) {
			int idx = str[i] - 'a';
			if (is_visit[idx] && str[i] !=str[i-1]) {
				cnt--;
				break;
			}
			else {
				is_visit[idx] = true;
			}
		}
	}
	cout << cnt << '\n';
}