ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NYPC2016_예선문제] 마비노기 듀얼: 올바른 덱인가요?
    프로그래밍/알고리즘 2017. 12. 2. 21:45


    문제

    풀이

    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
    //마비노기 듀얼: 올바른 덱인가요?
    #include <stdio.h>
    #include <string.h>
    struct resource{
        int gold, mana, light, dark, nature;
    };
    struct resource counter={0,0,0,0,0};
    int main(){
        int n;
        scanf("%d"&n);
        char deck[n][10];
        for(int i=0; i<n; i++scanf("%s"&deck[i]);
        for(int i=0; i<n; i++){
            if(strcmp(deck[i], "gold")==0) counter.gold++;
            else if(strcmp(deck[i], "mana")==0) counter.mana++;
            else if(strcmp(deck[i], "light")==0) counter.light++;
            else if(strcmp(deck[i], "dark")==0) counter.dark++;
            else if(strcmp(deck[i], "nature")==0) counter.nature++;
            else{
                printf("invalid");
                return 0;
            }
        }
        int none=0;
        if(counter.gold==0) none++;
        if(counter.mana==0) none++;
        if(counter.light==0) none++;
        if(counter.dark==0) none++;
        if(counter.nature==0) none++;
        if(none>=2){
            printf("valid"); 
            return 0;
        }
        else{
            printf("invalid");
            return 0;
        }
    cs


    설명

    resource: 구조체
    counter: 덱이 소모하는 자원의 수를 세기위한 카운터(resource 구조체 변수)
    n: 카드의 수 N
    deck: 덱이 소모하는 자원을 저장할 문자열 배열
    none: 덱에서 소모하지 않는 자원의 개수를 세기 위한 변수

    i: 반복문에 사용 

    -----

    자원을 입력받다가 5종류의 자원이 아닌 이상한 자원이 나왔다면 얼릉 invalid 출력하고 종료함
    이제 덱에서 소모하지 않는 자원 하나당 none 변수의 값을 하나씩 늘려줌
    덱에서 소모하지 않는 자원이니까, 그 값이 2 이하라면, 그 덱은 유효하지 않은 덱

    (덱은 최대 세 종류의 자원을 섞어서 구성되어야 하므로)
    이에 따라 따라서 valid, invalid 출력해줌.


    2017.08

    댓글

Designed by Tistory