-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1316.java
More file actions
60 lines (57 loc) · 2.23 KB
/
1316.java
File metadata and controls
60 lines (57 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
"그룹 단어"란, 단어에 존재하는 모든 문자에 대해서,
각 문자가 연속해서 나타나는 경우만을 말한다.
aaaaabbbbbccccc: 그룹 단어 O
aaaaabbbbbccccca: 그룹 단어 X
*/
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
FastReader fr = new FastReader();
int n = fr.nextInt();
int result = 0;
for (int testCase = 0; testCase < n; testCase++) {
String s = fr.next();
boolean groupWord = true;
// 이미 처리된 문자를 담기 위한 집합(Set) 자료형
HashSet<Character> hashSet = new HashSet<Character>();
hashSet.add(s.charAt(0));
// 하나씩 문자를 확인하며
for (int i = 1; i < s.length(); i++) {
// 이미 처리된 문자라면
if (hashSet.contains(s.charAt(i))) {
// 바로 앞에 있는 문자랑 같지 않다면(그룹이 아니라면)
if (s.charAt(i) != s.charAt(i - 1)) {
groupWord = false;
}
}
else hashSet.add(s.charAt(i));
}
if (groupWord) result++;
}
System.out.println(result);
}
public static class FastReader {
BufferedReader br;
StringTokenizer st;
public FastReader() { br = new BufferedReader(new InputStreamReader(System.in)); }
public FastReader(String s) throws FileNotFoundException { br = new BufferedReader(new FileReader(new File(s))); }
String next() {
while (st == null || !st.hasMoreElements()) {
try { st = new StringTokenizer(br.readLine()); }
catch (IOException e) { e.printStackTrace(); }
}
return st.nextToken();
}
int nextInt() { return Integer.parseInt(next()); }
long nextLong() { return Long.parseLong(next()); }
double nextDouble() { return Double.parseDouble(next()); }
String nextLine() {
String str = "";
try { str = br.readLine(); }
catch (IOException e) { e.printStackTrace(); }
return str;
}
}
}