문자열에서 연속된 문자가 아닌 문자가 있다면 그룹 단어가 아니다.
Set< Character > set을 통해 각 문자열의 문자를 저장한다.
그 후 Stack< Character > stack에 이전 문자를 저장해서 비교한다.
public class 그룹단어체커 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
String[] groups = new String[N];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
groups[i] = st.nextToken();
}
int count = 0;
for (String group : groups) {
boolean isGroup = true;
//stack의 peek에서 나오는 단어는 이전 단어.
Stack<Character> stack = new Stack<>();
Set<Character> set = new LinkedHashSet<>();
char[] word = group.toCharArray();
for (int i = 0; i < word.length; i++) {
char w = word[i];
//현재 문자가 set에 저장되어있지 않다면 set과 stack에 저장한다.
if(!set.contains(w)){
set.add(w);
stack.push(w);
}
//현재 문자가 set에 저장되어있다.
else{
//만약 이전 문자와 현재 문자가 다르다면 그룹 단어가 아니다.
if(!stack.isEmpty() && !stack.peek().equals(w)){
isGroup = false;
break;
}
}
}
//해당 문자열이 그룹 문자열이라면 count
if(isGroup) count++;
}
bw.write(String.valueOf(count));
bw.flush();
bw.close();
}
}