#include <iostream>
#include <cstdio>
using namespace std;
#define MAX 14
void init();
void solve(int tc);
int T;
char SS[3001] = { 0, };
char S[MAX], D[MAX], H[MAX], C[MAX];
int numS, numD, numH, numC;
int main()
{
scanf(" %d", &T);
for (int tc = 1; tc <= T; tc++){
init();
cin >> &SS[1];
solve(tc);
}
return 0;
}
void init(){
for (int i = 0; i < MAX; i++){
S[i] = 0; D[i] = 0; H[i] = 0; C[i] = 0;
}
}
//입력 1줄씩 처리
void solve(int tc){
char deck=0;
int num=0;
bool error = false;
numS = 0; numD = 0; numH = 0; numC = 0;
for (int i = 1; !((i%3) == 1 && SS[i] == NULL); ){
if ((i % 3) == 1){ deck = SS[i];}
else if ((i % 3) == 2){ num += (SS[i]-48)*10; }
else{
num += SS[i]-48;
switch (deck){
case 'S':
S[num]++;
break;
case 'D':
D[num]++;
break;
case 'H':
H[num]++;
break;
case 'C':
C[num]++;
break;
}
deck = 0;
num = 0;
}
i++;
}
//해당 번호에 카드가 2개 이상 들어가있다면 에러 출력
for (int i = 1; i < MAX; i++){
if (S[i] > 1){ error = true; }
else if (S[i] == 1){ numS++; }
if (D[i] > 1){ error = true; }
else if (D[i] == 1){ numD++; }
if (H[i] > 1){ error = true; }
else if (H[i] == 1){ numH++; }
if (C[i] > 1){ error = true; }
else if (C[i] == 1){ numC++; }
}
if (error == true){
printf("#%d ERROR\n", tc);
}
else{
printf("#%d %d %d %d %d\n",tc, 13 - numS, 13 - numD, 13 - numH, 13 - numC);
}
}
'이것저것' 카테고리의 다른 글
백준 2178 미로탐색 (0) | 2018.04.01 |
---|---|
SW 4050 재광이의 대량 할인 [D4] (0) | 2018.03.30 |
SW 2814 최장 경로 [D3] (0) | 2018.03.27 |
SW 3809 화섭이의 정수 나열 [D3] (0) | 2018.03.25 |
모의 SW 등산로 조성 소스 (0) | 2018.03.24 |
댓글