본문 바로가기

코딩테스트/백준

[백준-자바] 1316번 그룹 단어 체커 / 2022.01.24

 

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int N = sc.nextInt(); // 단어 입력 개수
       int count = 0; // 그룹단어 개수
       
       for(int i=0; i<N; i++) {
          String str = sc.next();
          char [] alpha = new char [str.length()];
          int last = 0;
          // 입력받은 문자열을 문자로 쪼개서 배열에 입력
          for(int j=0; j<str.length(); j++) {
             alpha[j] = str.charAt(j);
          }
          
          // 단어의 길이가 2 이하라면 무조건 그룹 단어
          if(str.length()<=2) {
             count++;
             continue;
          }
          
          // 그룹 단어인지 아닌지 판단
          loop: // for문 이름 지정
          for(int k=0; k<str.length()-1; k++) {
             if(alpha[k] == alpha[k+1]) // k번과 k+1이 같으면 넘어가
                continue;
             
             if(alpha[k] != alpha[k+1]) { // 만약 다르다면
                for(int h=0; h<k; h++) { // k+1 전에 일치하는 단어가 있으면 그룹단어가 아님
                   if(alpha[h] == alpha[k+1]) {
                      last++;
                      break loop; // 이름 loop인 for문 나가기
                   }
                }
                // 일치하는 단어가 없으면 다음 k번 진행
             }
          }
          
          if(last == 0) 
             count++;
          
          
       }
       System.out.println(count);
    } 
}

 

풀이 :

1. 단어의 길이가 2 이하라면 무조건 그룹 단어이다

2. 단어의 길이가 3 이상이라면 ?