반응형
분류: 문자열
▶문제
▶코드
//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨
package character_string;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class p1316 {
public static void main(String[] args) {
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
int number = Integer.parseInt(br.readLine());
int groupWord = number;
for(int k=0; k<number; k++) {
String s = br.readLine();
int[] arr = new int[26];
for(int i=0; i<s.length(); i++) { //한 단어씩 검사
if(arr[s.charAt(i)-97]==0) {
arr[s.charAt(i)-97] = 1; //완전처음 나온거면 1
}
else if(i>0 && s.charAt(i)==s.charAt(i-1) && arr[s.charAt(i)-97]==1) {//전에꺼랑 같으면 1
arr[s.charAt(i)-97] = 1;
}
else {groupWord -=1; break;}
}
}
bw.write(String.valueOf(groupWord)); //bw.write쓰기는 문자 출력이니까 바꿔서.. 아니면 +"\n"하거나
bw.flush();
}catch(Exception e) {e.printStackTrace();}
}
}
▶3가지로 분류했다.
먼저 groupWord를 전체 단어 갯수로 설정한 후, 그룹단어가 아니면 빼는 식으로 풀었다.
- arr[x]가 0일때 알파벳이 나오면, arr[x]=1 (aacbc)
- 지금 알파벳이 전 알파벳과 같을때(맨 첫문자빼고i>0) && arr[x]가 1이면, arr[x]=1 (aacbc)
- 그 나머지 (arr[x]가 1이면서 전 알파벳과 다른 경우aacbc ) 경우에는 뒷부분 더이상 볼필요 없이 그룹단어가 아니기에 groupWord에서 1을 뺀다
채점결과
링크 www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
반응형
'백준알고리즘' 카테고리의 다른 글
백준알고리즘:p2751 수 정렬하기2 (0) | 2021.03.17 |
---|---|
백준알고리즘:p2750 수 정렬하기 (0) | 2021.03.12 |
백준알고리즘:p2941 크로아티아 알파벳 (0) | 2021.03.09 |
백준알고리즘:p5622 다이얼 (0) | 2021.03.08 |
백준알고리즘:p2908 상수 (0) | 2021.03.08 |
댓글