백준/실버
[백준 9324번] 진짜 메시지 (C++)
게임개발기원
2023. 2. 23. 15:21
문제링크 : https://www.acmicpc.net/problem/9324
9324번: 진짜 메시지
스파이들은 사령부와 통신하기 위해서 SMTP(비밀 메시지 전송 프로토콜)를 사용해 비밀 회선으로 전자 메시지를 보낸다. 메시지가 적들에 의해 조작되어 보내진 것이 아닌 진짜 메시지라는 것
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0);
int check[26];
int T;
cin >> T;
while(T--)
{
memset(check, 0, sizeof(check));
string result="";
string M;
cin >> M;
for(int i=0; i<M.length(); i++)
{
check[M[i]-'A']++; //해당 알파벳 갯수 카운트
result+=M[i];
if(check[M[i]-'A'] == 3)
{
result+=M[i];
check[M[i]-'A'] -= 3;
i++;
}
}
if(result==M)
{
cout << "OK" <<"\n";
}
else
{
cout<<"FAKE"<<"\n";
}
}
return 0;
}
알파뱃의 갯수인 26만큼의 크기를 가진 배열을 선언하고, 각각 알파벳의 갯수를 저장한다.
따로 더해주는 문자열을 저장할 문자열을 선언하고, 각 문자를 더해가다가 알파벳 갯수가 3개가 되면 해당 알파벳을 하나 더 더해주고, 해당 배열값을 3빼준다(초기화)
이때 반복문의 인덱스값도 더해줌으로써 중복으로 더해주는 것을 방지한다.