728x90
반응형
단계별로 풀어보기 - [7단계.문자열] - 1316번 그룹 단어 체커
문제
문제링크
https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
풀이
정수 n을 입력받고, 단어를 n개 입력받는다.
각 단어가 그룹 단어인지 여부를 flag으로 판단하며, 단어 하나를 체크할 때마다 true로 초기화해준다.
각 단어의 알파벳을 순회하면서 현재 차례의 알파벳을 기준으로 그 이전 문자열을 잘라서 그 문자열에 현재 알파벳이 존재하는지 확인한다. 바로 전에 있는 알파벳과 같지 않으면서 이전 문자열에 존재하는 경우에는 그룹 단어가 아니므로 flag를 false로 바꾼다.
단어를 하나 체크할 때마다 flag를 확인하여 true이면 cnt를 증가시킨다.
CODE
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String[] word = new String[n];
for (int i = 0; i < n; i++) {
word[i] = scanner.next();
}
boolean flag = true; //그룹 단어라면 true
int cnt = 0; //그룹 단어 개수
for (int i = 0; i < n; i++) {
char[] arr = new char[word[i].length()];
flag = true;
for (int j = 1; j < word[i].length(); j++){
String str = String.valueOf(word[i].charAt(j));
if (word[i].charAt(j)!=word[i].charAt(j-1))
if (word[i].substring(0,j-1).contains(str))
flag = false;
}
if (flag)
cnt++;
}
System.out.println(cnt);
}
}
결과
728x90
반응형