본문 바로가기

백준 문제풀기/JAVA

[백준 1316 JAVA 자바] 그룹 단어 체커

kin은 그룹 단어입니다

aabbbccb는 b가 떨어져서 나타나기 때문에 그룹단어가 아닙니다

 

앞에 나왔던 알파벳이

뒤에 '떨어져서' 나오면

그룹단어가 아니게 됩니다

 

1. 알파벳을 하나씩 읽는데

2. 현재 내가 읽는 알파벳을 저장해서 연속으로 나오는 중인지 판단하고

3. 어떤 알파벳들이 나왔는지 저장할 집합을 이용합시다

 

코드입니다

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

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

    	int n = scan.nextInt();
    	scan.nextLine();
    	   	
    	int count = 0;
    	
    	for( int i=0;i<n;i++) {
    		Set<String> myset = new HashSet<>(); 
    		String str = scan.nextLine();
    		
    		String flag = str.substring(0,1);
    		myset.add(flag);
    		
    		for(int j=1;j<str.length();j++) {
    			if(str.substring(j, j+1).equals(flag)) {
    				continue;
    			}else if(str.substring(j, j+1).equals(flag)==false&&myset.contains(str.substring(j, j+1))==false) {
    				flag = str.substring(j, j+1);
    				myset.add(flag);
    			}else {
    				count+=1;
    				break;
    			}
    		}
    	}
    	System.out.println(n-count);    	
    }
}

 

현재 연속중인 알파벳을 flag에 저장했습니다

 

if(연속중인 경우)

else if(연속은 아니고, 새로운 알파벳인 경우)

else count+=1;

을 이용해

그룹단어가 '아닌' 단어의 수를 계산해줍니다