1122강의 - kyagrd/cprog2018Fall GitHub Wiki

#include <stdio.h>
#include <stdlib.h>

// 3차원 배열을 3중 포인터로 접근하도록
int main(void) {
    int m[2][3][2] = { {{10,11},{20,21},{30,31}},
                       {{40,41},{50,51},{60,61}} };

    int ***ppp = malloc(2*sizeof(int**));// = pa;
    for (int k=0; k<2; ++k) {
        ppp[k] = malloc(3*sizeof(int*));
        for (int i=0; i<3; ++i) ppp[k][i] = m[k][i];
    }
    /*
    ppp[0] = malloc(3*sizeof(int*));
    for (int i=0; i<3; ++i) ppp[0][i] = m[0][i];

    ppp[1] = malloc(3*sizeof(int*));
    for (int i=0; i<3; ++i) ppp[1][i] = m[1][i];
    */


    for (int i=0; i<2; ++i) {
        for (int j=0; j<3; ++j) {
            for(int k=0; k<2; ++k) printf("%d ", ppp[i][j][k]);
            printf(",");
        }
        printf("\n");
    }
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

// 카드를 아직 사용하지 않은 상태를 0
bool cards[2][4][13] = {};

// cards[0] 이 상대방 카드 한벌 정보
// cards[1] 이     내 카드 한벌 정보

int char2shape(char c) {
    switch (c) {
        case '0': return 0;
        case '1': return 1;
        case '2': return 2;
        case '3': return 3;
        default: return -1;
    }
}

char shape2char(int i) {
    switch (i) {
        case 0: return '0';
        case 1: return '1';
        case 2: return '2';
        case 3: return '3';
        default: return '\0';
    }
}

int char2value(char c) {
    switch (c) {
        case '2': return 0;
        case '3': return 1;
        case '4': return 2;
        case '5': return 3;
        case '6': return 4;
        case '7': return 5;
        case '8': return 6;
        case '9': return 7;
        case '0': return 8;
        case 'J': return 9;
        case 'Q': return 10;
        case 'K': return 11;
        case 'A': return 12;
        default: return -1;
    }
}

char value2char(int i) {
    switch (i) {
        case 0: return '2';
        case 1: return '3';
        case 2: return '4';
        case 3: return '5';
        case 4: return '6';
        case 5: return '7';
        case 6: return '8';
        case 7: return '9';
        case 8: return '0';
        case 9: return 'J';
        case 10: return 'Q';
        case 11: return 'K';
        case 12: return 'A';
        default: return -1;
    }
}

// 상대방이 먼저 하고 내가 나중에 카드를 낸다.
int main(void)
{
    // "00" 다이아 10
    // "03" 다이아 3
    // "0K" 다이아 K
    // "0J"
    // "0Q"
    // "0A"
    char str[8];
    for (int n=0; n<52; ++n) {
        scanf("%s", str);
        int yourshape = char2shape(str[0]);
        int yourvalue = char2value(str[1]);
        cards[0][yourshape][yourvalue] = true;
        // 비기기 전략
        int myshape = yourshape;
        int myvalue = yourvalue;
        str[0] = shape2char(myshape);
        str[1] = value2char(myvalue);
        str[3] = '\0';
        cards[0][myshape][myvalue] = true;
        printf("%s\n", str);
    }
    return 0;
}
⚠️ **GitHub.com Fallback** ⚠️