Coding Test/백준
[백준 자바 JAVA] 1316번 그룹 단어 체커
똧이
2022. 3. 17. 21:55
반응형
https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public 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 count = 0; // 그룹 단어의 개수
for(int i = 0; i < n; i++){
Boolean[] check = new Boolean[26]; // 알파벳의 등장여부
Boolean isGroupWord = true; // 해당 단어가 그룹 단어인지 아닌지 판별
String str = br.readLine();
for(int j = 0; j < str.length(); j++){ // 해당 단어의 길이만큼 반복
int ch = (int)str.charAt(j) - 97;
/*
아스키 코드 이용, a = 97 ~ z = 122
알파벳 순서대로 check 배열에 값을 넣어주기 위해서 -97을 해줬다.
ex. a의 아스키 코드는 97, a는 배열의 [0]번째에 들어가야 하므로 97 - 97 = 0
b의 아스키 코드는 98, b는 배열의 [1]번째에 들어가야 하므로 98 - 97 = 1
*/
if(check[ch] == null){ // 해당 문자가 아직 한 번도 등장하지 않은 경우
check[ch] = true; // 해당 배열값을 true로 변환
} else if (check[ch] == true){ // 해당 문자가 이전에 등장한 경우
if (str.charAt(j) != str.charAt(j-1)){ // 만약 j번째 문자가 j-1번째 문자와 같지 않다면 == 그룹 단어가 아니라면
isGroupWord = false; // 해당 단어는 그룹 단어가 아니므로 false값을 넣어주고
break; // 해당 for문을 중지시킨다.(이미 그룹단어가 아님을 판별 했으므로 더 이상 반복할 이유가 없음)
}
}
}
if(isGroupWord != false) count++; // 해당 단어가 그룹단어라면 count++
}
System.out.println(count);
}
}
728x90