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

GOSHK·2022년 2월 1일
0

[백준] Java

목록 보기
3/49
post-thumbnail

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

나의 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class GroupWordChecker {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        int answer = N;
        for(int i = 0; i < N; i++) {
            boolean[] check = new boolean[26];
            String word = br.readLine();
            for(int j = 0; j < word.length(); j++) {
                int alphabetIdx = word.charAt(j) - 'a';
                if(check[alphabetIdx] && j > 0) {
                    if(word.charAt(j) != word.charAt(j - 1)) {
                        answer--;
                        break;
                    } else {
                        continue;
                    }
                } else {
                    check[alphabetIdx] = true;
                }
            }
        }

        System.out.println(answer);
    }
}
  • 좀 더 속도를 높이기 위해, Scanner 대신 BufferedReader 를 사용했다.
  • 단어의 개수를 입력받고, 개수만큼 반복한다.
  • 문자의 연속성을 판별해줄 check boolean 배열을 알파벳의 개수만큼의 사이즈로 생성해준다.
  • 단어를 입력받고 단어의 길이만큼 반복을 한다.
  • 알파벳 a 가 0이 되도록 알파벳 인덱스를 계산해주고, boolean 배열에서 해당 알파벳의 인덱스가 false 라면 해당 알파벳 인덱스를 true 로 바꿔준다. -> 사용된 적이 없는 알파벳을 사용한 것으로 바꾸는 역할
  • 만약 사용한 적이 있는 알파벳이고 j가 0보다 클 경우, 만약 문자열에서 현재 위치(j)와 이전 위치(j - 1)가 다를 경우 연속되지 않는다고 판단하여 전체 단어 개수에서 -1을 해주고 반복을 종료한다. 아니라면 끝까지 체크하기 위해 다음 문자로 넘어간다.

0개의 댓글