반응형
출처: SWEA
Input
7
ZGBG
X
EE
AAB
AABA
AABB
BCBABCC
Output
GOOD
GOOD
GOOD
GOOD
GOOD
BAD
BAD
① 각 문자열로 D-쌍 구합니다.
쌍은 두 문자로 구성되어 있으므로 left, right 변수 이용
② D-쌍에서 D-유일 여부를 판단합니다.
쌍과 마찬가지로 유일성 여부를 판단하기 위해서는 left와 right 변수 활용
#include <iostream>
using namespace std;
string str;
bool isUnique(int left, int right, int distance) {
// 서로 같은 문자열이 있는지 확인
int l = 0, r;
while (true) {
r = l + distance;
// D_pair[]의 모든 원소를 찾은 경우
if (r >= str.length())
break;
if(l == left && r == right){
l++;
continue;
}
if(str[l] == str[left] && str[r] == str[right])
return false;
l++;
}
return true;
}
bool isGood(string str) {
// 주어진 문자열 길이가 L일 때, D-쌍의 개수 = L-1
// ex) L = 4일 때, D-쌍의 개수 4 - 1 = 3
int left, right;
for (int distance = 1; distance < str.length(); distance++) {
left = 0;
while (true) {
right = left + distance;
if (right >= str.length())
break;
if(!isUnique(left, right, distance))
return false;
left++;
}
}
return true;
}
int main() {
int testCase; cin >> testCase;
for (int tc = 1; tc <= testCase; ++tc) {
cin >> str;
if (isGood(str)) cout << "GOOD" << endl;
else cout << "BAD" << endl;
}
}
반응형
'PS 문제 풀이 > SWEA' 카테고리의 다른 글
[SWEA] 3456 직사각형 길이 찾기 (0) | 2021.02.24 |
---|---|
[SWEA] 3431 준환이의 운동관리 (0) | 2021.02.24 |
[SWEA] 3499 퍼펙트 셔플 (0) | 2021.02.24 |
[SWEA] 3750 Digit sum (0) | 2021.02.24 |
[SWEA] 9092 마라톤 (0) | 2021.02.24 |
댓글