BOJ 1316, 그룹 단어 체커
ProblemSolving ·단순 구현문제입니다.
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;
}