문제 풀이/Baekjoon Online Judge

[Baekjoon Online Judge] 1316번: 그룹 단어 체커

hyeonic 2021. 1. 5. 23:19
 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Baekjoon1316 {

    static boolean isGroupWord(String word) {
        List<Character> checked = new ArrayList<>();
        Character prevChar = null;

        for (int j = 0; j < word.length(); j++) {
            Character curChar = word.charAt(j);
            if (checked.contains(curChar)) {
                if (prevChar == curChar) continue;
                else {
                    return false;
                }
            } else {
                checked.add(curChar);
                prevChar = curChar;
            }
        }

        return true;
    }

    public static void main(String[] args) throws IOException {

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));

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

        int count = n;
        for (int i = 0; i < n; i++) {
            String word = bufferedReader.readLine();
            if (isGroupWord(word)) continue;
            else --count;
        }

        bufferedWriter.write(String.valueOf(count));

        bufferedWriter.flush();
        bufferedReader.close();
        bufferedWriter.close();
    }
}

 

 이미 나왔던 문자가 이전 문자인 경우 그룹단어로 인정된다. 만약 이전 값과 같지 않다면 그 단어는 그룹 단어가 아니기 때문에 count 값을 줄인다.