문자열이 주어지고, 각 문자가 연속적으로 나타나면 그룹 단어이고, 비연속적인 문자가 하나라도 나오면 그룹 단어가 아님을 판단하라는 문제이다.
받은 문자열을 하나하나 쪼개서 반복문 및 조건문으로 분석하여 boolean 자료형을 사용해,
그룹 단어면 true를 반환하고, 아니라면 false를 반환하는 on/off 형식으로 진행하는 방식이 핵심이다.
true라면 그 문자열에 대해 count++해준다.
위 정보를 토대로 설계한 코드는 아래와 같다.
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int cnt = 0;
for(int i=0; i<N; i++){
String s = br.readLine();
int[] arr = new int[26]; // 알파벳 26개
boolean chk = true; // 그룹 단어를 판단하는 스위치
for(int j=0; j<s.length(); j++){
char ch = s.charAt(j); // 문자열의 j번째 단어를 선택
if(j > 0 && ch != s.charAt(j-1)){ // j=0일땐 무시하고, j>0부터 진입. j번째와 j-1번째가 단어가 다를 때를 판단
if(arr[ch - 'a'] == 1){ // 이미 j번째 단어가 왔었다는 흔적이 있다면
chk = false; // 그룹 단어가 아님
break; // 이 문자열에 대해선 더이상 판단할 필요 없음
}
}
arr[ch - 'a'] = 1; // 처음 나온 단어라면 나왔다는 흔적을 표시
}
if(chk){ // 그룹 단어라면
cnt++; // count++
}
}
System.out.println(cnt);
br.close();
}
}
맞았습니다!!