[백준]단계별로 풀어보기 - 7단계.문자열 - 1316번 그룹 단어 체커 (Java 자바)

728x90
반응형

단계별로 풀어보기 - [7단계.문자열] - 1316번 그룹 단어 체커

문제


 

문제링크

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

풀이


정수 n을 입력받고, 단어를 n개 입력받는다.

각 단어가 그룹 단어인지 여부를 flag으로 판단하며, 단어 하나를 체크할 때마다 true로 초기화해준다.

각 단어의 알파벳을 순회하면서 현재 차례의 알파벳을 기준으로 그 이전 문자열을 잘라서 그 문자열에 현재 알파벳이 존재하는지 확인한다. 바로 전에 있는 알파벳과 같지 않으면서 이전 문자열에 존재하는 경우에는 그룹 단어가 아니므로 flag를 false로 바꾼다. 

단어를 하나 체크할 때마다 flag를 확인하여 true이면 cnt를 증가시킨다.

 

CODE

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        String[] word = new String[n];

        for (int i = 0; i < n; i++) {
            word[i] = scanner.next();
        }
        boolean flag = true; //그룹 단어라면 true
        int cnt = 0; //그룹 단어 개수
        for (int i = 0; i < n; i++) {
            char[] arr = new char[word[i].length()];
            flag = true;
            for (int j = 1; j < word[i].length(); j++){
                String str = String.valueOf(word[i].charAt(j));
                if (word[i].charAt(j)!=word[i].charAt(j-1))
                    if (word[i].substring(0,j-1).contains(str))
                        flag = false;
            }
            if (flag)
                cnt++;
        }
        System.out.println(cnt);
    }
}

 

결과


728x90
반응형