반응형
문제
풀이
package step7;
import java.io.BufferedReader;
import java.io.IOException;
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());//단어의 개수
String word;
int cnt = 0;//그룹 단어 개수
for(int i = 0; i < n; i++) {
word = br.readLine();
if(groupChk(word)) {
cnt++;
}
}
System.out.println(cnt);
br.close();
}
public static boolean groupChk(String word) {
int prev = 0;
boolean[] abcArr = new boolean[26];
for(int j = 0; j < word.length(); j++) {
int now = word.charAt(j);
if(prev != now) {//앞문자와 현재 문자가 다른 경우
if(!abcArr[now - 'a']) {//현재 문자가 처음 나온 경우
abcArr[now - 'a'] = true;
prev = now;
}else {//현재 문자가 처음이 아닌 경우
return false;//함수 종료
}
}
}
return true;
}
}
팁
- 반복문을 활용하여 charAt()으로 한 문자씩 꺼내와 비교한다.
1. prev와 now가 다른 경우
1.1 now가 처음 나온 경우
-> 해당 알파벳의 배열값을 true로 변경한다.
1.2 now가 처음이 아닌 경우
-> 단어가 떨어져서 나타나 그룹단어가 아니기 때문에 false를 리턴한다.
2. prev와 now가 같은 경우
-> 다른 로직 없이 다음 문자를 계속해서 비교한다.
출처
반응형
'알고리즘 > Java' 카테고리의 다른 글
[백준/단계별로 풀어보기] 8. 기본 수학 1 - 2292.벌집 (Java8) (0) | 2021.09.13 |
---|---|
[백준/단계별로 풀어보기] 8. 기본 수학 1 - 1712.손익분기점 (Java8) (0) | 2021.09.13 |
[백준/단계별로 풀어보기] 7. 문자열 - 2941.크로아티아 알파벳 (Java8) (0) | 2021.09.06 |
[백준/단계별로 풀어보기] 7. 문자열 - 5622.다이얼 (Java8) (0) | 2021.09.06 |
[백준/단계별로 풀어보기] 7. 문자열 - 2908.상수 (Java8) (0) | 2021.09.06 |