1) 메소드를 만들어서 호출하는 방식으로 풀이
import java.util.Scanner;
public class Back_1316_re {
static Scanner sc = new Scanner(System.in);
public static void main(String args[]) {
int count = 0;
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
if (check() == true) {
count++;
}
}
System.out.println(count);
}
public static boolean check() {
boolean[] check = new boolean[26]; // 알파벳 배열반큼 생성
int prev = 0; // 이전 문자
String str = sc.next();
for (int i = 0; i < str.length(); i++) {
int now = str.charAt(i);
// 만약 앞선 문자와 현재 탐색한 문자가 같지 않다면 ? (큰 if)
if (prev != now) {
// 앞선 문자와 현재 탐색한 문자가 같지 않고, 현재 탐색한 문자가 처음 나온 문자라면 ?
// 즉, check 배열의 해당 인덱스가 true가 아닌 기본값인 false라면!
// (안바뀐 상태기 때문에 처음 나온 문자인 것이다.)
// check 배열에 true를 넣어주자.
// (큰 if의 if)
if(check[now - 'a'] == false) {
check[now - 'a'] = true;
// 다음 비교를 위해 현재 값을 이전 값에 넣어준다.
// 왜냐하면 지금의 현재 값은 다음 문자의 이전 값이기 때문이다.
prev = now;
}
// 만약 앞선 문자와 현재 탐색한 문자가 같지 않고, 현재 탐색한 문자가 이미 나왔던 문자라면 ?
// (큰 if의 else if)
else if(check[now - 'a'] == true) {
// 그룹 단어가 아니므로 count를 올리면 안되기 때문에 false를 return하고 함수를 종료한다.
return false;
}
}
// 만약 앞선 문자와 현재 탐색한 문자가 같다면 ? (bb 처럼 이전 문자와 현재 문자가 연속되는 경우라면 ?)
// (큰 else if)
else if(prev == now) {
continue;
}
}
return true;
}
}
출처 및 참조) https://st-lab.tistory.com/69
'알고리즘 정리' 카테고리의 다른 글
백준 2292번[수학] 벌집 (0) | 2021.10.26 |
---|---|
백준 1193번[수학] 분수찾기 (0) | 2021.10.26 |
백준 2941번[문자열] 크로아티아 알파벳 (0) | 2021.10.20 |
백준 5622번[문자열] 다이얼 (0) | 2021.10.20 |
백준 2098번[문자열] 상수 (0) | 2021.10.20 |