게임을 진행하려면 이 카드들을 12장 이하로 모아 하나의 덱(deck)을 구성해야 한다. 이때, 각 덱은 최대 세 종류의 자원을 섞어서 구성할 수 있다.
12장 이하의 카드들이 요구하는 자원의 목록이 주어질 때, 이 카드들이 올바른 덱을 구성하는지 아닌지 판단하는 프로그램을 작성하여라.
입력
첫 줄에 카드의 수 N이 주어진다. N은 1 이상 12 이하이다. 다음 N개의 줄에 걸쳐 gold
(골드), mana
(마나), light
(빛), dark
(어둠), nature
(자연) 중 하나의 문자열이 주어진다. 이는 각 카드가 요구하는 자원을 뜻한다.
출력
주어진 카드들이 올바른 덱을 구성한다면 valid
를, 아니라면 invalid
를 출력한다.
입력 예시 1
1 2 3 4 5 6 7 8 9 10 11 12 13 | 12 gold gold gold gold gold gold gold gold gold gold gold gold | cs |
출력 예시 1
1 | valid | cs |
단일 자원으로 구성된 덱은 올바른 덱이다.
입력 예시 2
1 2 3 4 5 6 7 8 9 10 11 12 13 | 12 light light light light nature mana mana nature mana mana mana nature | cs |
출력 예시 2
1 | valid | cs |
세 종류의 자원으로 구성된 덱은 올바른 덱이다.
입력 예시 3
1 2 3 4 5 6 | 5 gold mana light dark nature | cs |
출력 예시 3
1 | invalid | cs |
다섯 종류의 자원으로는 덱을 구성할 수 없다.
입력 예시 4
1 2 3 4 5 6 7 8 9 10 11 12 13 | 12 light light light dark dark light light light light light dark light | cs |
출력 예시 4
1 | valid | cs |
코드(Code)
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 55 56 57 58 59 60 61 62 63 | #include <stdio.h> #define _CRT_SECURE_NO_WARNINGS int Check(char arr[][100], int count); int main(void) { char arr[100][100]; int count = 0; int CheckNumber = 0; scanf("%d", &count); for (int i = 0; i < count; i++) { scanf("%s", &arr[i][0]); } CheckNumber = Check(arr,count); if (CheckNumber == 0) { printf("valid \n"); } else { printf("invalid \n"); } } int Check(char arr[][100], int count) { int Light = 0, Nature = 0, Mana = 0, Gold = 0, Dark = 0; int CheckNumber = 0; for (int i = 0; i < count; i++) { if (arr[i][0] == 'M' || arr[i][0] == 'm') { Mana++; } else if (arr[i][0] == 'L' || arr[i][0] == 'l') { Light++; } else if (arr[i][0] == 'N' || arr[i][0] == 'n') { Nature++; } else if (arr[i][0] == 'G' || arr[i][0] == 'g') { Gold++; } else if (arr[i][0] == 'D' || arr[i][0] == 'd') { Dark++; } } if (Mana != 0) { CheckNumber++; } if (Gold != 0) { CheckNumber++; } if (Light != 0) { CheckNumber++; } if (Nature != 0) { CheckNumber++; } if (Dark != 0) { CheckNumber++; } if (CheckNumber <= 4) { return 0; } else { return 1; } } | cs |
댓글