개발 블로그

백준 1316: 그룹 단어(JAVA) / 본문

프로그래밍/백준 문제풀이

백준 1316: 그룹 단어(JAVA) /

갹둥 2022. 8. 10. 22:15

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

단어가 그룹 단어인지 판별하는 check라는 함수를 따로 만들었다. 그룹 단어이면 1을 반환하고 아니면 0을 반환해 카운팅해주면 된다. 

 

i번째 문자를 ch라 할 때 ch가 다음 인덱스의 문자와 다르다면, 그 이후부터는 ch가 문자열에 있으면 안된다. 따라서 i+1부터 마지막까지 잘라낸 문자열에 ch가 포함되어 있는지 검사하는 것을 [마지막 인덱스 - 1]까지 실행하면 된다. 

이 과정에서 String 클래스의 subString과 cotains 함수를 사용하였다. 

import java.util.*;

public class Main {
	public static void main(String[] args){
		int N, cnt=0;
		String str;
		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();
		
		for(int i=0; i<N; i++) {
			str = sc.next();
			cnt+=check(str);
		}
		System.out.println(cnt);
	}

	public static int check(String s) {
		char ch;//false이면 아직 나온 적 없음
		for(int i=0; i<s.length()-1; i++) {
			ch = s.charAt(i);
			if(ch!=s.charAt(i+1)) {
				if((s.substring(i+1)).contains(String.valueOf(ch)))
					return 0;
			}
		}
		
		return 1;
	  }
}

해당 알파벳이 나왔는지 검사하는 배열을 만들어서 사용하는 것도 좋을 것 같다.