본문 바로가기

코딩테스트

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

문제

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

저는 자바의 indexOf를 사용하였습니다.

 

indexOf는 문자의 인덱스 번호를 구하는데 만약 중복된 문자가 있으면 최초의 해당 문자의 인덱스 번호를 알려줍니다.

그래서, 이것을 이용해 문자의 인덱스 번호가 현재 for문의 j와 작을 때 (일치하지 않을 때) 그 전 문자와 이어지는 확인 후 같지 않다면 false로 하여 정답인 answer가 올라가지 않도록 합니다.

 

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());

		int answer = 0;
		for (int i = 0; i < N; i++) {
			String str = br.readLine();
			boolean flag = true;

			for (int j = 0; j < str.length(); j++) {
				int index = str.indexOf(str.charAt(j));
				
				if (index < j) {
					if (str.charAt(j - 1) != str.charAt(j)) {
						flag = false;
					}
				}
			}
			if (flag == true) {
				answer++;
			}
		}
		
		System.out.println(answer);
	}