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 |