PS 공부

백준 4일차 : 백준 1316번 그룹 단어 체커

Min00 2023. 2. 21. 11:27

작심삼일을 넘어서서 4일차네요!

 

앞으로도 열심히 달려볼게요!!

 

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

 

이번 문제는 알고리즘 작성을 넘어갈게요..

해보려고 했는데 뭔가 마땅한 방법이 떠오르지 않아서 중구난방으로 푼듯 합니다..ㅠ

 

대충 설명을 해보면

group이라는 함수를 만들어서 char 배열과 char을 받아서 이 문자만 봤을 때, group이 되는지 안되는지를 return하게 했습니다.

그리고 main 함수에서 입력받은 string을 배열로 바꿔서 각각의 문자를 넣어서 group 함수를 다 돌려줬어요!

 

저도 설명하기가 좀 어렵네요..ㅠㅠ

항상 백준 글 논리정연 잘쓰시는 분들 넘 부럽고 대단해요..

 

오늘은 딱히.. 에피소드가 없어서 글 마무리 할게요!

아마 며칠 이사준비로 쉴 수도 있는데, 최대한 해보도록 하겠습니다 ㅎㅎ 화이팅!!🦾

 

 

 

작성 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.*;
 
public class B1316 {
    
    public static boolean group(char[] in,char c) {
        
        int index=-10;
        
        for(int i=0;i<in.length;i++) {
            if(in[i]==c) {
                if(index==-10) {
                    index=i;
                }
                else if(index!=i&&i-index>1) {
                    index=-1;
                    break;
                }
                else index=i;
            }
        }
        
        if(index==-1return false;
        else return true;
    }
    public static void main(String[] args) throws IOException{
        // TODO Auto-generated method stub
        
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        
        int n=Integer.parseInt(br.readLine());
        int result=0;
        
        for(int i=0;i<n;i++) {
            boolean r=true;
            char[] input=br.readLine().toCharArray();
            for(int l=0;l<input.length;l++) {
                r=group(input,input[l]);
                if(!r) break;
            }
            if(r) result++;
            }
        System.out.println(result);
 
    }
 
}
cs