๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐“ก๐“ธ๐“ธ๐“ถ๐Ÿฃ: ๐’œ๐“๐‘”๐‘œ๐“‡๐’พ๐“‰๐’ฝ๐“‚/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด

BOJ1343 : ํด๋ฆฌ์˜ค๋ฏธ๋…ธ (Silver 5)

#include <iostream>
#include <vector>
#include <string.h>
using namespace std;

string poliomino[501];
void polifunc()
{
    poliomino[0] = ".";
    poliomino[1] = "-1";
    poliomino[2] = "BB";
    poliomino[3] = "-1";
    poliomino[4] = "AAAA";
    for (int i = 5; i <= 500; i++)
    {
        if (poliomino[i - 2] != "-1")
        {
            if (poliomino[i - 4] != "-1")
            {
                string tmp = poliomino[i - 4] + "AAAA";
                string tmp2 = poliomino[i - 2] + "BB";
                if (tmp > tmp2)
                {
                    poliomino[i] = tmp2;
                }
                else
                {
                    poliomino[i] = tmp;
                }
            }
            else
            {
                poliomino[i] = poliomino[i - 2] + "BB";
            }
        }

        else
            poliomino[i] = "-1";
    }
}

int main()
{
    string poli;
    cin >> poli;
    polifunc();
    string result;
    int count = 0;
    for (int i = 0; i < poli.length(); i++)
    {

        if (poli[i] == '.' && count != 0)
        {
            if (poliomino[count] == "-1")
            {
                cout << -1;
                return 0;
            }
            result += (poliomino[count]);
            count = 0;
        }
        if (poli[i] == '.' && count == 0)
            result += (poliomino[0]);
        else
            count++;
    }
    if (count)
    {
        if (poliomino[count] == "-1")
        {
            cout << -1;
            return 0;
        }
        result += (poliomino[count]);
    }
    for (int i = 0; i < result.length(); i++)
        cout << result[i];
}

๋ง‰ํŒ์— ์˜ˆ์™ธ ์ฐพ๋Š”๊ฒŒ ์กฐ๊ธˆ ๋นก์…Œ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ดˆ๋ฐ˜์— ์•„์ด๋””์–ด ๋– ์˜ฌ๋ฆฌ๊ธฐ๋Š” ์‰ฌ์› ๋‹ค.