문제링크 : https://www.acmicpc.net/problem/9324
#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빼준다(초기화)
이때 반복문의 인덱스값도 더해줌으로써 중복으로 더해주는 것을 방지한다.
'백준 > 실버' 카테고리의 다른 글
[백준 6591번] 어항 쇼다운 (C++) (0) | 2023.02.25 |
---|---|
[백준 14235번] 크리스마스 선물 (C++) (0) | 2023.02.24 |
[백준 14731번] 謎紛芥索紀 (Large) (C++) (0) | 2023.02.22 |
[백준 1740번] 거듭제곱 (C++) (0) | 2023.02.21 |
[백준 11123번] 양 한마리... 양 두마리... (C++) (0) | 2023.02.20 |