https://www.acmicpc.net/problem/1316
문자의 연속유무를 파악하는 것이 포인트
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class b1316 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int count = 0; // 그룹 단어 개수 출력 변수
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) { // 그룹 단어 체커 함수 n번 실행
if (check() == true) { // 그룹 단어일 경우 카운트 변수 증가
count++;
}
}
System.out.println(count);
}
// 그룹 단어 체크할 함수
// 그룹 단어인지 아닌지 파악 -> return boolean
public static boolean check() throws IOException {
boolean[] check = new boolean[26]; // 알파벳 개수만큼 배열 생성, 그룹 단어 체크 배열
int prev = 0; // 이전 문자와 연속 여부 파악 변수
String s = br.readLine();
for (int i = 0; i < s.length(); i++) {
int now = s.charAt(i); // 현재 문자
// 이전 문자와 i번째 문자가 같지 않다면?
if (prev != now) {
// 해당 문자가 처음 나오는 경우
if (check[now - 'a'] == false) {
check[now - 'a'] = true; // true로 변경
prev = now; // 현재 문자는 이전 문자로 변경, 다음 들어올 문자가 현재 문자로 변경
}
// 해당 문자가 이미 나온 적 있는 경우 (그룹 단어가 아님)
else {
return false;
}
} else { // 앞선 문자와 i번째 문자가 같다면? (연속된 문자)
continue;
}
}
return true;
}
}