반응형
문제
풀이
연속해서 나타나는 단어를 체크하는 부분에서 어떻게 구현을 하지? 하는 생각에 시간이 걸렸다
먼저 소문자 알파벳 배열 groupWords를 만들고 (a ~ z까지 총 26개)
그룹 단어가 아닌것을 구분하기 위해서 groupWordsCheck 변수를 만들었다
2중 for문을 이용해서 연속해서 단어를 체크를 하고 groupWords에 값을 입력
for (int k = j + 1; k < words[i].length(); k++) {
//그다음 단어가 같지 않다면 종료
if (words[i].charAt(j) != words[i].charAt(k)) {
groupWords[(int)words[i].charAt(j) - 97] = count;
break;
}
j++;
count++;
}
떨어진 단어가 나오면 groupWordsCheck false로 값을 입력
if (groupWords[(int)words[i].charAt(j) - 97] > 0) {
groupWordsCheck = false;
break;
}
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] words = new String[n];
int groupWordsCount = 0;
for (int i = 0; i < n; i++) {
words[i] = sc.next();
}
for (int i = 0; i < n; i++) {
int[] groupWords = new int[26];
boolean groupWordsCheck = true;
for (int j = 0; j < words[i].length(); j++) {
//이전에 단어가 있다면 그룹단어가 아님
if (groupWords[(int)words[i].charAt(j) - 97] > 0) {
groupWordsCheck = false;
break;
}
//연속된 문자 검색
int count = 1;
for (int k = j + 1; k < words[i].length(); k++) {
//그다음 단어가 같지 않다면 종료
if (words[i].charAt(j) != words[i].charAt(k)) {
groupWords[(int)words[i].charAt(j) - 97] = count;
break;
}
j++;
count++;
}
}
if (groupWordsCheck) {
groupWordsCount++;
}
}
System.out.println(groupWordsCount);
}
}
출처
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 10250번 ACM 호텔 자바 java (0) | 2021.04.07 |
---|---|
백준 2775번 부녀회장이 될테야 자바 java (0) | 2021.04.07 |
백준 1193번 분수찾기 자바 java (0) | 2021.04.06 |
백준 1546번 문제 c언어 (2) | 2021.03.31 |
백준 11653 문제 자바 java (0) | 2021.02.15 |
댓글