PS
BOJ 9324 : 진짜 메시지
lickelon
2025. 2. 19. 02:00
- 문제 링크 : boj.kr/9324
- 난이도 : S4
- 태그 : 문자열
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int T;
cin >> T;
while(T--) {
string s;
cin >> s;
int cnt[26] = {};
bool flag = true;
for(int i = 0; i < s.length(); i++) {
int a = s[i]-'A';
cnt[a]++;
if(cnt[a] % 4 == 0) {
flag &= s[i] == s[i-1];
}
}
for(int i = 0; i < 26; i++) {
if(cnt[i] % 4 == 3) flag = false;
}
cout << (flag ? "OK" : "FAKE") << "\n";
}
return 0;
}
풀이
조건을 다시 쓰면 다음과 같다.
1. 각 문자의 개수를 4x+3이 아니다.
2. 4k번째로 나온 어떤 문자는 그 직전의 문자와 동일하다.
이제 조건을 확인하기 쉬워졌으니 잘 체크해주면 된다.
728x90