https://www.acmicpc.net/problem/1316
1. 아이디어
각 알파벳에 대한 방문체크를 한 후 방문한 알파벳을 만났을 때 이전 알파벳과 현재 알파벳이 다르면 그룹 단어가 아님을 이용하면 간단하게 해결할 수 있다.
2. 문제풀이
알파벳 소문자만 등장하므로 26칸 짜리 방문체크 배열을 만들고 첫번째 알파벳을 방문 체크한 뒤 두번째 알파벳부터 마지막 알파벳까지 방문한 알파벳을 만났을 때 이전 알파벳과 동일하지 않으면 종료하는 방식으로 구현했다.
3. 코드
import java.io.*;
public 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;
out:
for (int i = 0; i < N; i++) {
char[] input = br.readLine().toCharArray();
boolean[] visited = new boolean[26];
visited[input[0] - 'a'] = true;
for (int j = 1; j < input.length; j++) {
if ((input[j] != input[j - 1]) && visited[input[j] - 'a']) continue out;
visited[input[j] - 'a'] = true;
}
cnt++;
}
System.out.println(cnt);
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 17427번 - 약수의 합 2 [Java] (0) | 2025.02.06 |
---|---|
[백준] 1991번 - 트리 순회 [Java] (0) | 2025.02.06 |
[백준] 5622번 - 다이얼 [Java] (0) | 2025.02.06 |
[백준] 17142번 - 연구소 3 [Java] (0) | 2025.02.04 |
[백준] 17141번 - 연구소 2 [Java] (0) | 2025.02.04 |