본문 바로가기

백준

9324)진짜 메세지

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


어떤 문자열이 진짜 전달하고자 하는 문자열 이라면 같은 문자가 3번 등장할 때


3번째 등장한 문자의 다음 문자는 반드시 같은 문자여야 한다.


예를들어 "AACAD"가 진짜 메세지일까 가짜 메세지일까.


마지막 'A'를 카운팅할 때 'A'를 3번 카운팅했는데 뒤의 문자가 'A'가 등장하지 않고 'D'가 등장했다.


따라서 위 문자열은 가짜 메세지이다.


이처럼 어떤 문자가 3번 등장했을 때 바로 다음 문자가 같은 문자인지만 검사하면 된다.


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
#include<stdio.h>
 
typedef enum _BOOL {
    FALSE = 0, TRUE = 1
} BOOL;
 
void initCount(int A[26]) {
    for (int i = 0; i < 26;i++) {
        A[i] = 0;
    }
}
 
int main() {
    int T;
    int indexAlpha;
    int cntAlpha[26= {0};
    BOOL isFake = FALSE;
    char str[100001];
 
    scanf("%d",&T);
    for (int i = 0; i < T;i++) {
        scanf("%s",str);
 
        for (int j = 0; str[j] != NULL; j++) {
            indexAlpha = str[j] - 'A';
            cntAlpha[indexAlpha]++;
 
            if (cntAlpha[indexAlpha] == 3) {
                cntAlpha[indexAlpha] = 0;
                if (str[j] != str[j+1]) {
                    isFake = TRUE;
                    break;
                }
                j+=1;
            }
        }
        if (isFake) printf("FAKE\n");
        else printf("OK\n");
 
        isFake = FALSE;
        initCount(cntAlpha);
    }
 
    return 0;
}
cs


'백준' 카테고리의 다른 글

2217)로프  (0) 2019.02.11
2290)LCD Test  (0) 2019.02.10
1057)토너먼트  (0) 2019.02.08
1094)막대기  (0) 2019.02.08
1748)수 이어 쓰기 1  (0) 2019.02.07