https://www.acmicpc.net/problem/1316
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] input = new String[N];
for (int i = 0; i < N; i++) {
input[i] = br.readLine();
}
System.out.println(solve(N, input));
}
static int solve(int N, String[] input) {
boolean[] check = new boolean[26];
int count = 0;
for (int i = 0; i < N; i++) {
char[] arr = input[i].toCharArray();
int prev = 0;
boolean isGroup = true;
for (int j = 0; j < arr.length; j++) {
int idx = arr[j] - 'a';
if (j > 0) {
prev = arr[j - 1] - 'a';
if (prev != idx && check[idx]) {
isGroup = false;
break;
}
}
check[idx] = true;
}
if (isGroup) {
count++;
}
Arrays.fill(check, false);
}
return count;
}
}
1) 알파벳이 하나씩만 존재하거나
, 2) 연속으로 존재하는
단어를 의미한다.happy
, hap
, h
는 위 조건을 만족함으로 그룹단어가 된다.hapa
의 경우는 a
가 두번 등장함에도 불구하고 연속적으로 붙어있지 않기 때문에 그룹단어가 될 수 없다.1) 알파벳이 이전에 나온적이 있는지
, 2) 만약 나온적이 있다면 그 알파벳이 연속적으로 존재하는지
두 개의 조건이다.check
배열을 사용하는 것이다. 알파벳이 등장했을 떄 이 check
배열을 true
로 갱신함으로써 추후 해당 알파벳이 나왔는지 판별할 수 있다.check
배열이 true
인지 확인함으로써 1번 조건
을 구현할 수 있다.prev
변수를 사용한다.j>0
이상, 즉 prev
를 초기화할 수 있는 시점부터 이전 알파벳과 현재 알파벳의 일치 여부를 확인할 수 있다.check
배열과 prev
의 값을 각 입력의 알파벳마다 비교함으로써 그룹단어
여부를 확인할 수 있다.1) 알파벳이 이전에 나왔으며
2) 이전 알파벳과 현재 알파벳이 일치하는지
만 구현하면 해결할 수 있는 문제이다.check배열
과 isGroup
의 초기화 시점에 유의해야 한다.public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int count = N;
for (int i = 0; i < N; i++) {
char[] str = br.readLine().toCharArray();
count += solve(str);
}
System.out.println(count);
}
public static int solve(char[] str) {
boolean[] appearArr = new boolean[26];
for (int i = 0; i < str.length - 1; i++) {
int idx = str[i] - 'a';
if (!appearArr[idx]) {
appearArr[idx] = true;
}
int nextIdx = str[i + 1] - 'a';
if (appearArr[nextIdx] && nextIdx != idx) {
return -1;
}
}
return 0;
}
}
안녕하세요 잘 보고 갑니다