백준 1316번 그룹 단어 체커

이상민·2023년 9월 4일
0

알고리즘

목록 보기
38/128
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Group_Word_Checker {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        String[] str = new String[N];
        boolean flag = false;
        int count = 0;
        for (int i = 0; i < N; i++) {
            str[i] = br.readLine();
            flag = false;
            for (int j = 0; j < str[i].length(); j++) {
                if(j>0 && str[i].charAt(j) != str[i].charAt(j-1)) {
                    for (int k = 0; k < j; k++) {
                        if(str[i].charAt(k)==str[i].charAt(j)) {
                            flag = true;
                            break;
                        }
                    }
                }
                if(!flag && j==str[i].length()-1)
                    count++;
            }

        }
        System.out.println(count);
    }
}

풀이방법

핵심은 단어를 돌면서 이전문자와 달라지는 순간에 그룹단어인지를 체크 하도록 설계하는 것이다.
1. 각 단어를 한 문자씩 돌며 이전문자와 달라지는 순간을 찾는다.
2. 이전문자와 달라졌을때, 전에 나왔던 문자라면 flag = true를 체크하고 반복을 빠져나온다. 그 단어는 그룹단어가 아니다.
3. 마지막문자까지 체크했는데 flag가 false라면 그룹단어 개수를 증가시킨다.

후기

결과적으로 삼중 포문을 사용하긴 했는데 포문이 여러개 나올때 그냥 따로 함수로 빼는게 직관적일것 같다. 다 포문안에서 처리할려니까 살짝 헷갈린다.

profile
개린이

0개의 댓글