Loading [MathJax]/jax/output/CommonHTML/jax.js

17276 - 배열 돌리기

2025. 3. 8. 15:09PS/백준

문제

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

느낀점

구현 기본 문제, 나름 재밌었다

코드

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T > 0)
    {
        int n, d;
        cin >> n >> d;
        vector<vector<int>> board(n, vector<int>(n));
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cin >> board[i][j];
            }
        }
        int mid = n / 2;
        for (int i = 0; i < abs(d) / 45; i++)
        {
            vector<vector<int>> check = board;
            for (int j = 0; j < n; j++)
            {
                for (int k = 0; k < n; k++)
                {
                    int in = check[j][k];
                    if (d > 0)
                    {
                        if (j == k)
                        {
                            board[j][mid] = in;
                        }
                        else if (k == mid)
                        {
                            board[j][n - j - 1] = in;
                        }
                        else if (j + k == n - 1)
                        {
                            board[mid][k] = in;
                        }
                        else if (j == mid)
                        {
                            board[k][k] = in;
                        }
                    }
                    else
                    {
                        if (j == k)
                        {
                            board[mid][j] = in;
                        }
                        else if (k == mid)
                        {
                            board[j][j] = in;
                        }
                        else if (j + k == n - 1)
                        {
                            board[j][mid] = in;
                        }
                        else if (j == mid)
                        {
                            board[n - 1 - k][k] = in;
                        }
                    }
                }
            }
        }
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                cout << board[i][j] << " ";
            }
            cout << "\n";
        }

        T--;
    }

    return 0;
}

'PS > 백준' 카테고리의 다른 글

21314 - 민겸 수  0 2025.03.12
19638 - 센티와 마법의 뿅망치  0 2025.03.10
16924 - 십자가 찾기  0 2025.03.07
16918 - 봄버맨  0 2025.03.06
9081 - 단어 맞추기  0 2025.03.05