python 코드 설명 :
우선 변수 tmp,cmp를 선언하여 tmp엔 입력된 단어를 구성하는 문자 중 직전 문자와 중복되지 않는 문자들을 담아준다.
그리고 tmp를 구성하는 단어들로 또 다시 중복 체크를 해주는데, 이번엔 tmp를 구성하는 문자 중 유일한 문자들만 cmp에 저장해준다.
만약 그룹 단어라면 tmp와 cmp가 동일할 것이고, 그룹 단어가 아니라면(tmp에 중복된 글자가 있다면) tmp와 cmp가 불일치 할 것이다.
java 코드 설명 :
알파벳 순서대로 존재 여부를 저장할 boolean 배열을 생성한다. 입력된 단어를 차례대로 직전 문자와 동일한지 검사하는데, 직전 문자와 다른 문자가 등장하면 문자에 해당하는 배열 index의 원소를 True로 바꿔준다. 만일 검사 도중 직전 문자와 동일하지 않은 문자인데 이미 이전에 등장한 적이 있는 문자면 떨어져서 다시 등장한 문자라서 그룹 단어 조건을 만족 못하므로 전체 단어의 개수 중 1개를 감소시킨다. 그룹 단어 조건을 만족 못하는 단어이므로 더 이상 검사할 필요가 없으니 break문으로 검사를 중단하고 다음 단어를 입력받는다.
python
if __name__ == '__main__':
N = int(input())
cnt = 0
for _ in range(N):
s = input()
tmp = s[0]
cmp = ""
for i in range(1, len(s)):
if s[i] != s[i-1]:
tmp += (s[i])
for i in tmp:
if i not in cmp:
cmp += i
if tmp == cmp:
cnt += 1
print(cnt)
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int count = N;
for(int i = 0; i<N;i++){
String s = sc.next();
boolean[] check = new boolean[26];
for(int j = 1; j<s.length();j++){
if(s.charAt(j) != s.charAt(j-1)){
if(check[s.charAt(j)-97]==true){
count --;
break;
}
check[s.charAt(j-1)-97] = true;
}
}
}
System.out.println(count);
}
}