Computer Science/Algorithm Problem

백준] 9324 - 진짜 메시지(ACM-ICPC Regional)

TwinParadox 2018. 1. 31. 22:10
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

첫째 줄에 100 이하의 테스트 케이스의 개수가 주어진다. 그리고 각 테스트 케이스마다 대문자로만 이루어진 10만자 이하의 문자열 M이 한 줄에 주어진다. (검사해야할 메시지다)




출력

테스트 케이스마다 메시지 M이 진짜 메시지면 “OK”를, 가짜 메시지면 “FAKE”를 한 줄에 출력한다.




소스코드

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
	int t, len;
	bool real = true;
	cin >> t;
	while (t--)
	{
		string s;
		int arr[26] = { 0, };
		cin >> s;
		len = s.length(), real = true;
		for (int i = 0; i < len; i++)
		{
			arr[(char)s[i] - 'A']++;
			if (arr[(char)s[i] - 'A'] > 0 && arr[(char)s[i] - 'A'] % 3 == 0)
			{
				if (s[i + 1] != s[i] || i == len - 1)
				{
					real = false;
					break;
				}
				i++;
			}
		}
		if (real)
			cout << "OK\n";
		else
			cout << "FAKE\n";
	}
}




Tip

단순 구현 문제로 쉽게 풀 수 있지만, 실수할 수 있는 요소들이 간간히 있다. 메시지 판별 중 반복문이 끝나는 경우 등을 고려해야 한다.


728x90