그룹 단어 체커
1. 제출 코드 (12분 23초 / 구현)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
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 answer = 0;
for(int i = 0; i < N; i++) {
String input = br.readLine();
Map<Character, Integer> map = new HashMap<>();
char prev = input.charAt(0);
map.put(input.charAt(0), 0);
boolean isValid = true;
for(int j = 1; j < input.length(); j++) {
if(prev != input.charAt(j)) {
if(map.get(input.charAt(j)) == null) {
map.put(input.charAt(j), 0);
} else {
isValid = false;
break;
}
}
prev = input.charAt(j);
}
if(isValid) {
answer++;
}
}
System.out.println(answer);
}
}
2. 구현 로직
- 가장 처음에 문자를 map에 저장
- 문자열을 하나씩 탐색하면서 이전에 문자와 동일한지 판별
- 다를 경우에 map에 해당 key가 있는 지 확인하고 없다면 map에 put 있다면 2번째로 나온 것이므로 연속되지 않음 그룹 판별
- 문자열을 다 돌고 isValid가 유효하다면 정답
3. 유의할 점
- array를 활용해서 탐색을 하려다가 문자열의 크기가 커지면 시간이 오래걸릴 거 같아 map을 이용해봤다.