문제 풀이(67)

Youngseon Kim·2024년 3월 2일

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

import java.util.*;
import java.io.*;



public class Main {

    static int N;

    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
        N = Integer.parseInt(br.readLine());

        int ans = 0;

        for (int i = 0; i < N; i++) {
            
            String s = br.readLine();

            boolean Flag = true;

            for (int j = 0; j < s.length(); j++) {
                
                if( !function(s.charAt(j), s) ){
                    Flag = false;
                    break;
                }
            }

            if (Flag) {
                ans++;
            }

        }

        System.out.println(ans);
    }

    public static boolean function(char tmp, String str){

        char[] ch = str.toCharArray();

        ArrayList<Integer>list = new ArrayList<>();

        for (int i = 0; i < ch.length; i++) {
            
            if (tmp == ch[i]) {
                list.add(i);
            }
        }

        if (list.size() == 1 ) {
            return true;
        }

        Collections.sort(list);

        for (int i = 0; i < list.size() - 1; i++) {
            
            if (list.get(i + 1) - list.get(i) !=  1) {
                return false;
            }
        }

        return true;
    }
}

이 자바 프로그램은 사용자로부터 입력받은 N개의 단어 각각에 대해 그룹 단어 여부를 판단하여 그룹 단어의 총 개수를 출력합니다. 프로그램의 핵심은 function 메소드로, 이 메소드는 주어진 문자가 해당 단어에서 연속적으로 나타나는지를 검사합니다. 메소드는 단어 내의 특정 문자의 모든 출현 위치를 리스트에 기록합니다. 이후 이 리스트를 순회하며 각 위치가 연속적인지 확인합니다. 연속성이 깨지는 순간, 해당 문자에 대해 false를 반환하며, 이는 해당 단어가 그룹 단어가 아님을 의미합니다. 모든 문자에 대해 이 검사를 통과하면 단어는 그룹 단어로 간주되어 최종 카운트에 포함됩니다. 메인 함수에서는 이 로직을 모든 입력받은 단어에 대해 반복하여, 최종적으로 그룹 단어의 개수를 계산하고 출력합니다.

0개의 댓글