ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1343번 : 폴리오미노(C 언어)
    c c++ 언어 공부 2023. 8. 22. 10:41

    https://www.acmicpc.net/problem/1343

     

    1343번: 폴리오미노

    첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.

    www.acmicpc.net

    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
    #include <stdio.h>
    #include <string.h>
     
    int main() {
        char arr[51= { 0, };
        scanf("%s", arr);
        int len = strlen(arr);
        int flag = 0;
     
        for (int i = 0; i < len; i++)
        {
            if ((len-3>=0&& arr[i] == 'X' && arr[i + 1== 'X' && arr[i + 2== 'X' && arr[i + 3== 'X')
            {
                arr[i] = 'A';
                arr[i + 1= 'A';
                arr[i + 2= 'A';
                arr[i + 3= 'A';
            }
            else if ((len - 1 >= 0&& arr[i] == 'X' && arr[i + 1== 'X')
            {
                arr[i] = 'B';
                arr[i + 1= 'B';
            }
            continue;
        }
        for (int i = 0; i < len; i++)
        {
            if (arr[i] == 'X')
            {
                flag = 1;
                break;
            }
        }
        if (flag == 1)
        {
            printf("-1");
        }
        else
        {
            for (int i = 0; i < len; i++)
            {
                printf("%c", arr[i]);
            }
        }
    }
    cs

    문제 설명:

    민식이는 무한개의 폴리오미노 AAAA와 BB를 가지고 있습니다. 이제 주어진 보드판에 있는 'X'를 폴리오미노로 덮으려고 합니다. 'X'를 이용하여 폴리오미노를 덮을 수 있는데, '.'는 폴리오미노로 덮으면 안 된다는 규칙이 있습니다. 주어진 보드판을 모두 덮는 가장 사전순으로 앞선 방법을 찾아 출력해야 합니다.

    입력:

    • 첫째 줄에 보드판이 주어집니다. 보드판의 크기는 최대 50입니다.

    출력:

    • 첫째 줄에 사전순으로 가장 앞선 답을 출력합니다. 만약 덮을 수 없으면 -1을 출력합니다.

    코드 설명:

    이 코드는 주어진 보드판에 'X'를 폴리오미노로 덮는 문제를 해결하는 프로그램입니다.

    • 먼저, arr 배열에 보드판을 입력받고, 입력받은 문자열의 길이를 len 변수에 저장합니다.
    • 루프를 돌면서 arr 배열을 순회하며 'X'를 발견하면 주어진 폴리오미노 규칙에 따라 'A' 또는 'B'로 덮어씁니다. 이때, 인덱스 범위를 확인하여 배열 범위를 초과하지 않도록 합니다.
    • flag 변수를 사용하여 'X'가 남아 있는지 확인하고, 'X'가 남아 있다면 -1을 출력합니다. 그렇지 않으면 덮어쓴 보드판을 출력합니다.

Designed by Tistory.