📍 문제 설명
💡 접근
각 단어에 대해 한글자씩 접근하여 바로 앞의 단어에 대해서 같지 않을때 앞의 이전 문자열들에 대해서 탐색하는 식으로 접근하였음.
예제 입력 5가지에 대해서는 제대로 출력이 되는데 틀렸다고만 나온다.
시간초과 / 메모리초과 / 기타 에러가 아니다.
접근 로직은 비슷했으나 찾지는 못해서 타블로그를 참고 좀 했다.
👩💻 코드
import java.util.*;
class Main {
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
String[] arr = new String[n];
for(int i = 0; i < n; i++) {
arr[i] = kb.next();
}
int answer = 0;
//각 단어들을 탐색(탐색 시 마다 배열 필요함)
for(int i = 0; i < arr.length; i++) {
boolean[] check = new boolean[26];
int prev = 0;
boolean flag = true;
//각 단어의 문자들을 탐색
for(int j = 0; j < arr[i].length(); j++) {
//i번째의 문자 저장
int now = arr[i].charAt(j);
//바로 이전 문자와 다를 때만 중복문자인지 아닌지 체크
if(prev != now) {
//나온적 없는 문자라면
if(check[now - 'a'] == false) {
check[now - 'a'] = true;
prev = now;
}
//나온적 있는 문자라면 그룹 단어가 아니다.
else {
flag = false;
break;
}
}
}
if(flag) {
answer++;
}
}
System.out.println(answer);
}
//0 일 때 넘어가
//1 일 때 넘어가
//2 일 때 바로 앞에 문자 같은지 확인
//같다면 연속된 문자라서 넘어가
//다르다면 그 이전 문자들 중 현재 문자가 있으면 그룹 단어가 아님
private int solution(int n, int[] d) {
return d[n];
}
}