각각의 카드문양과 숫자를 저장하기 위한 2차원 배열 card[4][14]를 이용하여 각 문양에 해당하는 카드를 입력받아 개수를 카운트한다.
그런 후, 2개 이상의 중복된 카드가 있으면 오류,
오류가 아니라면 부족한 카드 개수를 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <stdio.h> #include <string.h> int main() { int T; scanf("%d\n", &T); for (int testcase = 1; testcase <= T; ++testcase) { int card[4][14] = { {0,}, }; char input[1001]; scanf("%s", input); int len = strlen(input); for (int i = 0; i < len; i = i + 3) { int temp = 0; temp = input[i + 2] - '0'; if (input[i + 1] == '1') temp += 10; int check = 0; if (input[i] == 'S') { check = 0; } else if (input[i] == 'D') { check = 1; } else if (input[i] == 'H') { check = 2; } else if (input[i] == 'C') { check = 3; } card[check][temp]++; } printf("#%d", testcase); int check = 0; int count[4] = { 0, }; for (int i = 0; i < 4; i++) { for (int j = 1; j <= 13; j++) { if (card[i][j] == 0) { count[i]++; } else if (card[i][j] > 1) { check = 1; break; } } } if (check) printf(" ERROR\n"); else { for (int i = 0; i < 4; i++) printf(" %d", count[i]); printf("\n"); } } return 0; } | cs |