[백준] 1316번 - 그룹단어 판단 알고리즘 (java)

팥빵·2025년 5월 28일

Baekjoon

목록 보기
18/49


>>문제 바로가기<<

문자열이 주어지고, 각 문자가 연속적으로 나타나면 그룹 단어이고, 비연속적인 문자가 하나라도 나오면 그룹 단어가 아님을 판단하라는 문제이다.

받은 문자열을 하나하나 쪼개서 반복문 및 조건문으로 분석하여 boolean 자료형을 사용해,
그룹 단어면 true를 반환하고, 아니라면 false를 반환하는 on/off 형식으로 진행하는 방식이 핵심이다.
true라면 그 문자열에 대해 count++해준다.

위 정보를 토대로 설계한 코드는 아래와 같다.

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

class Main{
	public static void main(String[] args) throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int N = Integer.parseInt(br.readLine());
        int cnt = 0;
        
        for(int i=0; i<N; i++){
        	String s = br.readLine();
            int[] arr = new int[26];	// 알파벳 26개
            boolean chk = true;			// 그룹 단어를 판단하는 스위치
            for(int j=0; j<s.length(); j++){
            	char ch = s.charAt(j);	// 문자열의 j번째 단어를 선택
                if(j > 0 && ch != s.charAt(j-1)){	// j=0일땐 무시하고, j>0부터 진입. j번째와 j-1번째가 단어가 다를 때를 판단
                	if(arr[ch - 'a'] == 1){			// 이미 j번째 단어가 왔었다는 흔적이 있다면
                    	chk = false;	// 그룹 단어가 아님
                        break;			// 이 문자열에 대해선 더이상 판단할 필요 없음
                    }
                }
                arr[ch - 'a'] = 1;		// 처음 나온 단어라면 나왔다는 흔적을 표시
            }
            if(chk){	// 그룹 단어라면
            	cnt++;	// count++
            }
        }
        System.out.println(cnt);
        br.close();
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글