Algorithm/baekjoon

그룹 단어 체커

마닐라 2021. 12. 24. 16:51

📍 문제 설명

💡 접근

각 단어에 대해 한글자씩 접근하여 바로 앞의 단어에 대해서 같지 않을때 앞의 이전 문자열들에 대해서 탐색하는 식으로 접근하였음.

예제 입력 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];
    }

}

'Algorithm > baekjoon' 카테고리의 다른 글

한수  (0) 2021.12.26
제로  (0) 2021.12.26
덩치  (0) 2021.12.26
크로아티아 알파벳  (0) 2021.12.24
셀프넘버  (0) 2021.12.24