import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int count = 0;
int no = sc.nextInt();
for(int i=0;i<no;i++){
if(check() == true){
count++;
}
}
System.out.println(count);
}
public static boolean check() {
boolean[] check = new boolean[26];
String str = sc.next();
int prev = 0;
for(int i=0;i<str.length();i++){
int now = str.charAt(i);
if(prev != now){ //앞 뒤 문자가 다름
if(check[now -'a']==false){ // 처음 나오는 문자
check[now -'a']=true;
prev = now;
} else if (check[now-'a']==true){ // 이전에 나온적이 있는 문자 (중복된 문자)
return false;
}
} else { // 연속된 문자, 앞 뒤 문자가 같음
continue;
}
}
return true;
}
}
- 코드를 짜기 위해 크게 두 상황으로 나누어 생각하면 쉬움!
- - 앞 뒤 문자가 다르다 : 이전에 나온 적이 있다 (==true) -> false 반환 || 처음 나온다 (==false) -> true 반환
- - 앞 뒤 문자가 같다 : true 반환
한 번 나왔던 알파벳 배열 위치에는 true를 넣어준다고 생각함!
한 번 더 나왔을 때에는 이전과 연속되어 나온 것이 아니라면 false로 변경해줌!!
=====> 윗 부분을 check() 함수에서 정의
=====> main() 함수에서 true 갯수 카운팅해주고 출력해주면 됨!
'코딩테스트 연습' 카테고리의 다른 글
[JAVA] 1157번 단어공부 문제!! (1) | 2023.10.23 |
---|---|
[JAVA] 백준 3052 나머지 (0) | 2023.10.17 |
[백준] 1008번 문제 A/B - java (0) | 2022.10.27 |
댓글