BOJ 1316, 그룹 단어 체커

구현

BOJ 1316, 그룹 단어 체커

단순 구현문제입니다.

alpha라는 배열을 선언해서 그 알파벳이 앞에서 쓰인 알파벳인지 체크해주시면 쉽게 푸실 수 있습니다.

풀이

첫 번째, 이전에 사용되지 않았던 알파벳이다.(alpha[str[i]-‘a’]==0) 이면 alpha에 1을 체크하고 넘어간다.

두 번째, 이전에 사용되었던 알파벳인데 바로 직전에 사용되었던(붙어 있는) 알파벳이면 넘어가면 됩니다.

세 번째, 이전에 사용되었던 알파벳인데 붙어 있지도 않다. == 그룹 단어가 아니다!, 처음 입력받은 수에서 1을 빼준다. ​

#include<stdio.h>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int alpha[30];
int main()
{
	int t;
	string str;
	scanf("%d", &t);
	int ans = t;
	while (t--)
	{
		memset(alpha, 0, sizeof(alpha));
		cin >> str;
		for (int i = 0; i < str.size(); i++)
		{
			if (alpha[str[i]-'a'] == 0)
				alpha[str[i] - 'a'] = 1;
			else if (str[i - 1] == str[i])
				continue;
			else
			{
				ans--;
				i = str.size() + 1;
			}

		}
	}
	printf("%d\n", ans);
	return 0;
}

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