[백준] 1316 : 그룹 단어 체커 - Java

길 잃은 까마귀·2022년 9월 14일
0

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


  • 문제

  • 풀이

그룹 단어인지 확인하는 함수를 이용해서 풀었다.

함수 이전에 main코드를 설명하면 문자열을 입력받아서 문자열을 함수에 넣고 true면 카운트를 증가시켜준다.

함수를 설명하면 우선 알파벳 크기의 boolean배열을 만들면 기본적으로 모든 값에 false가 들어있다.

그래서 알파벳이 처음 등장하면 boolean배열에서 알파벳의 위치가 false일때는 boolean배열의 알파벳 위치를 true로 만들고 이전의 글자를 의미하는 변수에 저장한다. 그리고 continue로 for문에 돌아간다.

근데 여기서 그룹단어가 아닌 조건은 이전에 나왔던 문자인데 다른 문자열들과 떨어져 있다는 것이므로 이전글자와 현재의 글자가 다르고, 그 알파벳의 boolean배열은 true일때만 성립한다. 이것을 그대로 조건문으로 써주면 된다.


  • 코드
import java.io.*;
import java.util.*;

class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int cnt = 0;
		for (int i = 0; i < N; i++) {
			if (check_num(br.readLine()))
				cnt++;
		}
		System.out.println(cnt);
	}

	public static boolean check_num(String s) {
		boolean arr[] = new boolean[26];
		int num = 0;
		char prev = '0';
		for (int i = 0; i < s.length(); i++) {
			char now = s.charAt(i);
			if (arr[now - 'a'] == false) {
				arr[now - 'a'] = true;
				prev = now;
				continue;
			}
			if (now != prev && arr[now - 'a'] == true) {
				return false;
			}
		}
		return true;
	}
}
profile
코딩 고수가 될 사람

0개의 댓글