https://www.acmicpc.net/problem/1316
import java.util.*;
import java.io.*;
public class Main {
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
int ans = 0;
for (int i = 0; i < N; i++) {
String s = br.readLine();
boolean Flag = true;
for (int j = 0; j < s.length(); j++) {
if( !function(s.charAt(j), s) ){
Flag = false;
break;
}
}
if (Flag) {
ans++;
}
}
System.out.println(ans);
}
public static boolean function(char tmp, String str){
char[] ch = str.toCharArray();
ArrayList<Integer>list = new ArrayList<>();
for (int i = 0; i < ch.length; i++) {
if (tmp == ch[i]) {
list.add(i);
}
}
if (list.size() == 1 ) {
return true;
}
Collections.sort(list);
for (int i = 0; i < list.size() - 1; i++) {
if (list.get(i + 1) - list.get(i) != 1) {
return false;
}
}
return true;
}
}
이 자바 프로그램은 사용자로부터 입력받은 N개의 단어 각각에 대해 그룹 단어 여부를 판단하여 그룹 단어의 총 개수를 출력합니다. 프로그램의 핵심은 function 메소드로, 이 메소드는 주어진 문자가 해당 단어에서 연속적으로 나타나는지를 검사합니다. 메소드는 단어 내의 특정 문자의 모든 출현 위치를 리스트에 기록합니다. 이후 이 리스트를 순회하며 각 위치가 연속적인지 확인합니다. 연속성이 깨지는 순간, 해당 문자에 대해 false를 반환하며, 이는 해당 단어가 그룹 단어가 아님을 의미합니다. 모든 문자에 대해 이 검사를 통과하면 단어는 그룹 단어로 간주되어 최종 카운트에 포함됩니다. 메인 함수에서는 이 로직을 모든 입력받은 단어에 대해 반복하여, 최종적으로 그룹 단어의 개수를 계산하고 출력합니다.