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
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 11637 - 인기 투표(ACM-ICPC Regional) (0) | 2018.02.03 |
---|---|
백준] 3059 - 등장하지 않는 문자의 합 (0) | 2018.01.31 |
백준] 2875 - 대회 or 인턴(COCI 2010/2011) (0) | 2018.01.30 |
백준] 3035 - 스캐너(COCI 2006/2007) (0) | 2018.01.30 |
백준] 5046 - 전국 대학생 프로그래밍 대회 동아리 연합(ACM-ICPC Regional) (0) | 2018.01.26 |