문제
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
구현 방법
그룹 단어는 각 문자가 연속해서 나타나는 경우를 말합니다. 앞에 나온 문자가 연속하지 않고 뒤에 또 나오게 된다면 그룹 단어가 아니라고 볼 수 있습니다. 따라서 앞에 나온 알파벳이 연속되고 연속이 끊긴 이후에 해당 단어가 나오지 않는다면 그룹 단어 입니다.
저는 배열로 구현하였습니다. 알파벳이 들어왔는지 확인하는 boolean 배열을 26크기만큼 생성해줍니다.
문자를 하나씩 검사하여 해당 문자가 바로 직전 문자와 동일하면 연속하므로 continue, 현재까지 나오지 않았다면 해당 알파벳 = true, 직전 문자와 동일하진 않고 이미 전에 나왔던 문자라면 flag = true로 해주고 반복문을 끝내주었습니다.
구현 코드
package BOJ.Silver.구현;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class B1316_그룹단어체커 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int cnt = 0; // 그룹단어체커 카운트
for (int n=0;n<N;n++) {
String word = br.readLine();
boolean flag = false;
boolean[] alpha = new boolean[26]; // 알파벳 체크하는 배열
alpha[(word.charAt(0)-'0')-49] = true;
for (int i=1;i<word.length();i++) {
char temp = word.charAt(i);
if (word.charAt(i-1)==temp) continue;
if (alpha[(temp-'0')-49]) {
flag = true;
break;
}
alpha[(temp-'0')-49] = true;
}
if(!flag) cnt++;
}
System.out.println(cnt);
}
}
'백준' 카테고리의 다른 글
백준 14716번 : 현수막 (0) | 2021.03.06 |
---|---|
백준 17298번 : 오큰수 (0) | 2021.03.06 |
백준 1541번 : 잃어버린 괄호 (0) | 2021.03.05 |
백준 1449번 : 수리공 항승 (0) | 2021.03.05 |
백준 14889번 : 스타트와 링크 (0) | 2021.03.05 |