[BOJ]1025-제곱수 찾기

yoon_H·2023년 10월 16일
0

BOJ

목록 보기
42/83

1025

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int res = -1;

//완전제곱수
void CheckSquare(int num)
{
    int tmp = sqrt(num);
    int value = pow(tmp, 2);

    if (num == value)
    {
        if (num > res)
        {
            res = num;
        }
    }
}



int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int N, M;

    cin >> N >> M;

    vector<vector<int>> vec;
    
    for (int i = 0; i < N; i++)
    {
        vector<int> v;
        string s;
        cin >> s;
        for (int j = 0; j < M; j++)
        {
            v.push_back(s[j] - '0');
        }

        vec.push_back(v);
    }



    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            for (int k = 0; k < N; k++)
            {
                for (int l = 0; l < M; l++)
                {
                    if (i == k && j == l)
                    {
                        continue;
                    }

                    int num = vec[i][j]*10 +vec[k][l];
                    
                    CheckSquare(num);

                    int addRow = k - i;
                    int addCol = l - j;

                    int row = k + addRow;
                    int col = l + addCol;

                    while (row >= 0 && row < N && col >= 0 && col < M)
                    {
                        num = num * 10 + vec[row][col];

                        CheckSquare(num);

                        row += addRow;
                        col += addCol;
                    }

                }
            }

            CheckSquare(vec[i][j]);

        }
    }

    cout << res;
}

문제를 보고 무서워서 구글링을 했는데
자세히 보진 않고 코드 길이만 보고 오~ 생각보다 짧은데 하고 풀었더니 풀렸다. ㅎㅎ

참고자료


1025 c++

0개의 댓글