ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Softeer [level 2] : 전광판 (C 언어)
    softeer 문제 2023. 3. 30. 00:16

     

     

    https://softeer.ai/practice/info.do?idx=1&eid=624&sw_prbl_sbms_sn=171287 

     

    Softeer

    연습문제를 담을 Set을 선택해주세요. 취소 확인

    softeer.ai

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    #include <stdio.h>
    #include <string.h>
     
     
    int turnoff(int num)
    {
        int arr[10= { 6,2,5,5,4,5,6,4,7,6 };
        return arr[num];
    }
     
    int change(int num,int cnum)
    {
        switch (num)
        {
            case 0:
            {
                int arr0[10= { 0,4,3,3,4,3,2,2,1,2 };
                return arr0[cnum];
                break;
            }
            case 1:
            {
                int arr1[10= { 4,0,5,3,2,5,6,2,5,4 };
                return arr1[cnum];
                break;
            }
            case 2:
            {
                int arr2[10= { 3,5,0,2,5,4,3,5,2,3 };
                return arr2[cnum];
                break;
            }
            case 3:
            {
                int arr3[10= { 3,3,2,0,3,2,3,3,2,1 };
                return arr3[cnum];
                break;
            }
            case 4:
            {
                int arr4[10= { 4,2,5,3,0,3,4,2,3,2 };
                return arr4[cnum];
                break;
            }
            case 5:
            {
                int arr5[10= { 3,5,4,2,3,0,1,3,2,1 };
                return arr5[cnum];
                break;
            }
            case 6:
            {
                int arr6[10= { 2,6,3,3,4,1,0,4,1,2 };
                return arr6[cnum];
                break;
            }
            case 7:
            {
                int arr7[10= { 2,2,5,3,2,3,4,0,3,2 };
                return arr7[cnum];
                break;
            }
            case 8:
            {
                int arr8[10= { 1,5,2,2,3,2,1,3,0,1 };
                return arr8[cnum];
                break;
            }
            case 9:
            {
                int arr9[10= { 2,4,3,1,2,1,2,2,1,0 };
                return arr9[cnum];
                break;
            }
        }
    }
     
     
    int main()
    {
        int t;
        scanf("%d"&t);
        char a[6], b[6];
        int count = 0;
        while (t--)
        {
            count = 0;
            int index = 0;
            scanf("%s %s", a, b);
            if (strlen(a) == strlen(b))
            {
                for (int i = 0; i < strlen(a);i++)
                {
                    count+=change(a[i]-'0', b[i] - '0');
                }
            }
            else if (strlen(a) < strlen(b))
            {
                for (int i = 0; i < strlen(b) - strlen(a); i++)
                {
                    count += turnoff(b[index++- '0');
                }
                for (int i = 0; i < strlen(a); i++)
                {
                    count += change(a[i] - '0', b[index++- '0');
                }
            }
            else if (strlen(a) > strlen(b))
            {
                for (int i = 0; i < strlen(a) - strlen(b); i++)
                {
                    count += turnoff(a[index++- '0');
                }
                for (int i = 0; i < strlen(b); i++)
                {
                    count += change(b[i] - '0', a[index++- '0');
                }
            }
            printf("%d\n", count);
        }
    }
    cs

    문제풀이 :

    1. 숫자 전광판을 끄는 경우와 다른숫자로 바뀌는 경우를 turnoff와 change함수를 만들었다.

    2. 입력받은 a와 b를 문자열로 입력을 받아 길이를 체크함.

    3. 같을 때 a가 길 때, b가 길 때의 경우의 수를 만들어줌.

     

     

Designed by Tistory.