문제 링크입니다: https://www.acmicpc.net/problem/9324
동일한 문자가 3번 나올 때마다 해당 문자가 다음 인덱스에도 등장해야지 진짜 메시지입니다.
따라서, 동일한 문자가 3번 나왔을 때 해당 문자열이 끝난다거나, 다음 인덱스에 다른 문자가 있다면 가짜 메시지입니다!
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int test_case;
cin >> test_case;
for (int t = 0; t < test_case; t++)
{
bool real = true;
string s;
cin >> s;
int alphabet[26] = { 0 };
for (int i = 0; i < s.length(); i++)
{
alphabet[s[i] - 'A']++;
if (alphabet[s[i] - 'A'] == 3)
{
//문자열의 끝
if (i == s.length() - 1)
{
real = false;
break;
}
//다음 인덱스에 다른 문자
else if (s[i + 1] != s[i])
{
real = false;
break;
}
i++;
alphabet[s[i] - 'A'] = 0;
}
}
if (real)
cout << "OK\n";
else
cout << "FAKE\n";
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 4949번 균형잡힌 세상 (11) | 2018.11.09 |
---|---|
백준 5612번 터널의 입구와 출구 (0) | 2018.11.07 |
백준 2110번 공유기 설치 (2) | 2018.11.07 |
백준 2805번 나무 자르기 (0) | 2018.11.07 |
백준 1654번 랜선 자르기 (0) | 2018.11.07 |