Java/백준

[Java][1316] 그룹 단어 체커

tmd1 2022. 8. 3. 20:29

문제:

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

코드:

import java.util.*;

public class Main {
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	int n = sc.nextInt(); // n개 입력 받음
    	
    	int ans = 0;
    	for(int i=0;i<n;i++) {
    		String s = sc.next(); // 단어 입력
    		boolean flag = true; // 연속 체크
    		int [] cnt = new int[s.length()]; // 같은 문자 개수 체크
    		
            // 입력받은 단어의 각 알파벳 개수를 센다.
            // happy의 경우 cnt[0] =1(h) , cnt[1](a) = 1, 
            // cnt[2](p) =2, cnt[3](p) = 1, cnt[4](y) = 1
            
    		for(int j=0;j<s.length();j++) {
    			for(int k=j;k<s.length();k++) {
    				if(s.charAt(j) == s.charAt(k)) {
    					cnt[j]++;
    				}
    			}
    		}
    		
            //알파벳의 개수만큼 다른 알파벳이 존재하는지 체크
            //존재한다면 flag = false;
    		for(int j=0;j<s.length();j++) {
    			for(int k=j;k<j+cnt[j];k++) {
    				if(k < s.length() && s.charAt(j) != s.charAt(k)) {
    					flag = false;
    				}
    			}
    		}
            // 존재하지 않는다면 ans를 1 증가
    		if(flag) {
				ans++;
			}
    	}
    	System.out.println(ans);
    }
}

 

s = aaba를 입력 받았을 경우

cnt[0] = 3 , cnt[1] = 2, cnt[2] = 1, cnt[3] = 1 이다.

s.charAt(0)이 s.charAt(0)~s.charAt(2) 까지 다른 알파벳이 있는지 체크한다.

s.charAt(2) = b 이므로 flag가 false가 된다.

 

s = aaab를 입력 받았을 경우

cnt[0] = 3 , cnt[1] = 2, cnt[2] = 1, cnt[3] = 1 이다.

s.charAt(0)이 s.charAt(0)~s.charAt(2) 까지 다른 알파벳이 있는지 체크한다.

s.charAt(1)이 s.charAt(1)~s.charAt(2) 까지 다른 알파벳이 있는지 체크한다.

s.charAt(2)이 s.charAt(2)~s.charAt(2) 까지 다른 알파벳이 있는지 체크한다.

s.charAt(3)이 s.charAt(3)~s.charAt(3) 까지 다른 알파벳이 있는지 체크한다.

다른 알파벳이 존재하지 않으므로 ans를 1 증가시킨다.

 

위와 같은 과정을 n 만큼 반복한다.

 

 

다른 분의 풀이

https://st-lab.tistory.com/69

 

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

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속..

st-lab.tistory.com