ALGORITHM

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

연듀 2022. 8. 4. 18:22

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

        List<Character> list = new ArrayList<>();
        int cnt=0;

        while(n-- > 0){
            String str = br.readLine();
            list.clear();
            boolean flag=true;

            for(int j=0; j<str.length()-1; j++){
                list.add(str.charAt(j));
                if(str.charAt(j)!= str.charAt(j+1)){
                    if(list.contains(str.charAt(j+1))) flag = false;
                }
            }
            if(flag) cnt++;
        }
        System.out.println(cnt);
    }
}

 

알파벳을 하나씩 리스트에 추가하고,

알파벳과 바로 뒤 알파벳을 비교해서 서로 다른 알파벳이면서 뒤 알파벳이 기존 리스트에 있던 알파벳이면

그 단어는 그룹단어가 아니므로 카운팅하지 않는다. 

 

boolean 형 알파벳 배열을 만들어 알파벳에 해당하는 위치에 true값을 넣고 true인지 체크하는 방식으로 해도될것같다.