알고리즘 연습

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

밀깜 2021. 11. 9. 21:23

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

1. 배운점

- 반복문의 실행 횟수를 정할 때 부등호와 범위를 꼼꼼히 확인하면 불필요한 계산을 줄일 수 있다.

 

2. 개선할 점

- 좀 더 효율적인 비교 방법 또는 다른 접근법을 공부할 것

 

3. 궁금한 점

 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		// import java.util.Scanner
		Scanner scan = new Scanner(System.in);
		
		// 단어 개수 입력받기
		int wordNum = Integer.parseInt(scan.nextLine());
		
		// 그룹단어 개수 출력하기
		int count = 0;
		
		for(int i = 0; i < wordNum; i ++) {
			
			String word = scan.nextLine();
			
			if(isGroupWord(word)) {
				count++;
			}
		}
		
		System.out.println(count);
	}
	
    // 그룹단어인지 확인하는 메서드
	private static boolean isGroupWord(String word) {
		
        // 기본값은 true로 설정한다
		boolean test = true;
		
        // 매개변수로 받은 값을 쪼개서 배열에 담는다
		String [] arr = word.split("");

		for (int i = 1; i < arr.length-1; i++) {
			// i+1번째 있는 값이 i번째 값과 다를때			
			if (!arr[i+1].equals(arr[i])) {
            	// i+1 번째 값이 0 ~ i번째 값과 같은 경우 false를 반환한다.
				for(int j = 0; j < i; j++) {
					if(arr[i+1].equals(arr[j])) {
						test = false;
						break;
					}
				}
			}
		}
		return test;
	}
}