1. 문제
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
2. 문제 접근
- 하나의 값을 입력받는다.
- 그 값만큼 반복해서 단어를 입력 받는다.
- 입력 받은 단어들 중 그룹 단어의 수를 출력한다.
- 핵심!
1) 그룹 단어의 개수를 저장하는 check 변수를 매 단어를 검사할 때 마다 1씩 증가시킨다.
2) 각 단어의 char 하나씩 접근하며 해당하는 배열의 인덱스의 값을 true로 바꾸고 만약에 이미 그 인덱스의 값이 true인 경우에 앞의 char가 현재 char와 다르면 그룹단어가 아닌것으로 간주하고 check값을 1뺀다.
3. 코드
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
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 check = 0;
String input;
for(int i=0;i<N;i++) {
boolean alpha[] = new boolean[26];
input = br.readLine();
for(int j=0;j<input.length();j++) {
if(j>0 && alpha[(int)input.charAt(j)-'a'] && input.charAt(j)!=input.charAt(j-1)) {
check--;
break;
}
alpha[(int)input.charAt(j)-'a'] = true;
}
check++;
}
System.out.println(check);
}
}
'백준 > JAVA' 카테고리의 다른 글
[백준/JAVA] 2839번 설탕 배달 (0) | 2023.01.19 |
---|---|
[백준/JAVA] 10757번 큰 수 A+B (0) | 2023.01.19 |
[백준/JAVA] 2941번 크로아티아 알파벳 (0) | 2023.01.18 |
[백준/JAVA] 2908번 상수 (0) | 2023.01.18 |
[백준/JAVA] 단계별로 풀어보기(5단계) 코드 모음 (0) | 2023.01.18 |