murry2018 / BelarusianCutlet

[벨라루스 전통 돈까스집] 알고리즘 스터디용 리포지토리입니다.
0 stars 0 forks source link

21W27-구현 - 01 시작하기 #11

Open murry2018 opened 3 years ago

murry2018 commented 3 years ago

SWEA 5185. 이진수

n = int(input())
for i in range(n):
    num = f'{int(input().split()[1], 16):b}'
    print(f"#{i+1} {'0'*((4-len(num)%4)%4)+num}")
murry2018 commented 3 years ago

SWEA 5186. 이진수2

n = int(input())
for i in range(n):
    hip = [int(c) for c in input()[2:][::-1]]
    h = hip.pop()
    d = 5
    res = ''

    while True:
        if h - d >= 0:
            h -= d
            res += '1'
        else:
            res += '0'

        if len(hip) == 0 and h == 0:
            break
        if len(res) > 12:
            res = 'overflow'
            break

        t = hip.pop() if len(hip) > 0 else 0
        h = h*10+t
        d = d*5 # d*10 /2
    print(f'#{i+1} {res}')
happy-oh commented 3 years ago

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<iostream>
#include<string.h>

using namespace std;

int main(void)
{

    //freopen("input.txt", "r", stdin);
    int T, T_temp;
    T_temp = 1;
    scanf("%d", &T);
    int test_case;
    char array[51][101];
    int row, col, idx, jdx;
    bool find_flag;
    int rightup_row, rightup_col;
    char catch_data[8][8];
    int catch_integer[8];
    int sum_integer;
    int debug_integer;
    for (test_case = 1; test_case <= T; ++test_case)
    {
        find_flag = 0;
        int kdx = 0;
        int mdx = 0;
        scanf("%d %d", &row, &col);
        for (idx = 0; idx < row; ++idx)
        {
            scanf("%s", array[idx]);
        }
        for (idx = 0; idx < row; ++idx)
        {

            for (jdx = col-1; jdx >= 0; --jdx)
            {
                if ((array[idx][jdx] == 49)&&(find_flag==0))
                {
                    find_flag = 1;
                    rightup_row = idx;
                    rightup_col = jdx;
                }
                if (find_flag == 1)
                {

                    if (mdx == 7)
                    {
                        mdx = 0;
                        ++kdx;
                    }
                    if (kdx == 8)
                    {
                        break;
                    }

                    catch_data[7 - kdx][6 - mdx] = array[idx][jdx];
                    catch_data[7 - kdx][7] = NULL;
                    ++mdx;
                }
            }
            if (kdx == 8)
                break;
        }
        sum_integer = 0;
        debug_integer = 0;
        for (idx = 0; idx < 8; ++idx)
        {
            if (strcmp(catch_data[idx], "0001101") == 0)
                catch_integer[idx] = 0;
            else if (strcmp(catch_data[idx], "0011001") == 0 )
                catch_integer[idx] = 1;
            else if (strcmp(catch_data[idx], "0010011") == 0 )
                catch_integer[idx] = 2;
            else if (strcmp(catch_data[idx], "0111101") == 0 )
                catch_integer[idx] = 3;
            else if (strcmp(catch_data[idx], "0100011") == 0 )
                catch_integer[idx] = 4;
            else if (strcmp(catch_data[idx], "0110001") == 0)
                catch_integer[idx] = 5;
            else if (strcmp(catch_data[idx], "0101111") == 0 )
                catch_integer[idx] = 6;
            else if (strcmp(catch_data[idx], "0111011") == 0 )
                catch_integer[idx] = 7;
            else if (strcmp(catch_data[idx], "0110111") == 0 )
                catch_integer[idx] = 8;
            else if (strcmp(catch_data[idx], "0001011") == 0 )
                catch_integer[idx] = 9;
            else
            {
                catch_integer[idx] = -1000;

            }

            sum_integer = sum_integer + catch_integer[idx]; 
            if (idx % 2 == 0)
                debug_integer = debug_integer + 3 * catch_integer[idx];
            else
                debug_integer = debug_integer +  catch_integer[idx];

        }
        if (debug_integer % 10 != 0)
            sum_integer = 0;
        printf("\n#%d %d", test_case, sum_integer);

    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
```c++
moodmine commented 3 years ago

SWEA 1240. 단순 2진 암호코드

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

using namespace std;

int Decode(char input[])
{
    char arr[8];
    for (int i = 0; i < 7; i++)
        arr[i] = input[i];
    arr[7] = '\0';
    if (!strcmp(arr, "0001101"))
        return 0;
    if (!strcmp(arr, "0011001"))
        return 1;
    if (!strcmp(arr, "0010011"))
        return 2;
    if (!strcmp(arr, "0111101"))
        return 3;
    if (!strcmp(arr, "0100011"))
        return 4;
    if (!strcmp(arr, "0110001"))
        return 5;
    if (!strcmp(arr, "0101111"))
        return 6;
    if (!strcmp(arr, "0111011"))
        return 7;
    if (!strcmp(arr, "0110111"))
        return 8;
    if (!strcmp(arr, "0001011"))
        return 9;
    else
        return -1;
}

int main(int argc, char** argv)
{
    int test_case;
    int T;
    //freopen("input.txt", "r", stdin);
    cin >> T;

    for (test_case = 1; test_case <= T; ++test_case)
    {
        int size_column;
        int size_row;

        int i, j;

        scanf("%d %d", &size_column, &size_row);
        char** arr;
        arr = (char**)malloc(sizeof(char*) * size_column);
        for (i = 0; i < size_column; i++)
            arr[i] = (char*)malloc(sizeof(char) * (size_row + 1));
        char signal = 0;
        int num_row = 0;

        for (i = 0; i < size_column; i++)
        {
            scanf("%s", arr[i]);
            for (j = 0; j < size_row + 1; j++)
            {
                if (arr[i][j] == '1')
                {
                    num_row = i;
                }
            }
        }

        char temp[7] = { 0, };
        int code[9];
        int data;
        int num_code = 8;
        j = 0;
        signal = 0;
        int start = 0;

        while (num_code)
        {
            j = start;
            num_code = 8;

            while (num_code)
            {
                for (i = 0; i < 7; i++)
                {
                    temp[i] = arr[num_row][j + i];
                }
                data = Decode(temp);
                if (data == -1)
                {
                    start++;
                    break;
                }
                else
                {
                    code[num_code] = data;
                    num_code--;
                    j += 7;
                }
            }
        }

        int sum = 0;

        for (i = 2; i < 9; i++)
        {
            if (i % 2 == 0)
                sum += code[i] * 3;
            if (i % 2 == 1)
                sum += code[i];
        }

        printf("#%d ", test_case);

        if ((sum + code[1]) % 10 == 0)
        {
            sum = 0;
            for (i = 8; i > 0; i--)
                sum += code[i];
            printf("%d", sum);
        }
        else
            printf("0");
        printf("\n");
    }
    return 0;
}