만능재주꾼

[백준 1316] 그룹 단어 체커 - JAVA 본문

💻 Algorithm/BOJ

[백준 1316] 그룹 단어 체커 - JAVA

유고랭 2021. 3. 5. 21:22

문제

✏️ 그룹 단어: 단어에 존재하는 모든 문제에 대해 각 문자가 연속해서 나타는 경우를 말한다.

    ✔️ 그룹단어인 경우 -> ccazzzzbb, kin

    ✔️ 그룹단어가 아닌 경우 -> aabbbccb (b/c, b가 떨어져서 나타나 문자가 연속되지 않으므로)

 

입력

  • 첫째 줄에 단어의 개수 N (N<=100, N은 자연수)
  • 둘째 줄부터는 단어 입력 (단어의 길이 <= 100, 단어는 중복 X)

출력

  • 그룹 단어의 개수 출력

코드

import java.util.Scanner;
class GroupWordCheck {
    static Scanner sc = new Scanner(System.in);
    public static void main(String [] args){
        int n = sc.nextInt(); //입력받을 단어 개수
        int count = 0;
        
        //문자의 연속 확인하기
        for (int i=0;i<n;i++){
            if (check() == true) count++;
        }
        System.out.println(count);
    }
    public static boolean check(){
        boolean [] arr = new boolean[26]; //알파벳 개수만큼 배열 설정
        int prev = 0; //이전 문자
        String str = sc.next(); //문자열 입력받기
        for (int i=0;i<str.length();i++){
            int now = str.charAt(i); //문자열 중 i번째 문자
            if (prev!=now){ //이전 문자와 현재 문자가 다르면
                if (arr[now-'a'] == false){ //해당 알파벳이 처음 등장하면
                    arr[now-'a'] = true; 
                    prev = now; //이전 문자 바꿔주기
                } else return false; //해당 알파벳이 이미 등장했던 것이라면 그룹단어 아니므로 false 반환
            } else continue;
        }
        return true;
    }
}

풀이

  • 입력된 문자열에서 문자 하나하나를 이전 문자와 비교하며 검사
  • check()함수의 첫 번째 조건문은 i-1번째 문자와 i번째 문자가 다를 때
  • check()함수의 두 번째 조건문은 문자에 해당하는 알파벳 배열이 false라면  -> 이전에 문자가 나오지 않았으면 true로 바꾸기
  • check()함수의 두 번째 조건문은 문자에 해당하는 알파벳 배열이 true라면  -> 이전에 문자가 나온 것이므로 false 반환

    

Comments