Hayden's Archive

[알고리즘] 백준 1316번 : 그룹 단어 체커 본문

Algorithm

[알고리즘] 백준 1316번 : 그룹 단어 체커

_hayden 2020. 6. 12. 18:41

알고리즘 문제 출처 : https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

내가 작성한 코드

입력받은 문자열을 char 배열로 바꾸고, 반복문을 돌려 기준이 되는 charStr[j] 값을 두고 k번째는 같지 않은데 k+1번째는 같을 경우 그룹 단어에 해당되지 않으므로 break하여 반복문을 깨고 나오도록 하였다. 그룹단어를 식별하기 위해서 boolean 타입의 flag를 따로 두었다.

어떻게 문제는 해결했지만 다소 코드가 조잡해진 것 같아서 아쉽다. 나중에 시간 내서 다시 풀어봐야지.

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[] charStr = str.toCharArray();
			boolean flag = true;
			for(int j=0; j<charStr.length-1; j++) {
				for(int k=j; k<charStr.length-1; k++) {
					if(charStr[k]!=charStr[j] && charStr[k+1]==charStr[j]) {
						flag = false;
						break;
					}
				}
				if(flag==false) break;
			}
			if(flag==true) count++;
		}
		System.out.println(count);
	}
}