[BOJ] 1316 그룹 단어 체커

김재익·2023년 7월 4일
0

알고리즘

목록 보기
6/10
post-thumbnail

문제

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

코드

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

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

        int count = 0;
        for (int i = 0; i < N; i++) {
            boolean check = true;
            Set<Character> set = new HashSet<>();
            Character pre = null;
            for (char spelling : br.readLine().toCharArray()) {
                if (pre == null) {
                    set.add(spelling);
                    pre = spelling;
                    continue;
                }
                if (spelling != pre) {
                    if (set.contains(spelling)) {
                        check = false;
                        break;
                    } else {
                        pre = spelling;
                        set.add(spelling);
                    }
                }
            }
            count = check ? count + 1 : count;
        }
        System.out.println(count);
    }
}

생각

생각나는데로 구현한 코드지만 제한 시간이 넉넉해서 통과 한 것 같다.
시간 제한이 빡빡하거나 테스트 케이스들의 단어가 엄청 길다면 Set말고 boolean배열을 사용하면 좋을 것 같고
철자확인 반복문이 시작 되기전에 단어를 미리 쪼개 char 배열로 생성해놓고 첫 철자에 대한 처리를 해서 if문을 하나 없애면 어떨까 싶다.

profile
개발자호소인

0개의 댓글