백준공부/java
[백준] 1316번 그룹 단어 체커 문제! (silver 5
gomduri43
2022. 8. 7. 19:23
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
int n=Integer.parseInt(br.readLine());
int alphabet;
int count=n;
boolean[] howMany=new boolean[n];
for(int i=0;i<n; i++) {
int[] wordRoom=new int[26];
String a=br.readLine();
for(int j=0; j<a.length(); j++) {
alphabet=a.charAt(j)-'a';
//여기서 wordRoom[alphabet]값이 0일때는 아직 등장 전으로 잡아준 것이므로,
//만약 등장했는데, 인덱스 0에서 등장하여 그대로 0이 저장된다면,
//후에 그 알파벳이 다시 등장해도, 인덱스 0이라 0인지, 등장 전이라 0인지 구분이 불가
//따라서, 등장 전을 0으로 잡고 등장한 수는 구분하기 위해서,
//j+1을 저장해준다. 그러면 인덱스 0에서 등장한 알파벳도 1이 들어가, 등장 전 0이랑 구분,
//이렇게 될경우, j+1값을 대입함으로써, 다음 인덱스 값을 지니게 되는 것이므로,
//다음 반복문에서, wordRoom[alphabet]안에 j(j+1을 했던 값)가 있으면,
//이는 지금 바로전에 단어에서 그 알파벳이 등장했다는 소리이다.
if(wordRoom[alphabet]==0 || wordRoom[alphabet]==j ) {
wordRoom[alphabet]=j+1;
}
else {
count--; //이는 그룹단어체커가 아니므로 count에서 제외하기.
break;
}
}
}
bw.write(count+"");
bw.flush();
}
}