Programmers_행렬 테두리 회전하기

한상현·2021년 6월 14일
0

Algorithm

목록 보기
18/33

테두리를 시계방향으로 회전하는 단순한 문제입니다.
이런 단순구현문제가 오히려 어렵더라구요 저는.

  • 단순 구현 문제. 시계방향으로 돌려주고, 그 중 최솟값을 찾아서 push 해주면 되는 문제.
  • 실수하면 어디서 실수했는지 찾기 싫은 문제

💻 전체 코드

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int arr[102][102];

vector<int> solution(int rows, int columns, vector<vector<int>> queries)
{
    vector<int> answer;

    int index = 1;

    for (int i = 1; i <= rows; i++)
        for (int j = 1; j <= columns; j++)
            arr[i][j] = index++;

    for (int i = 0; i < queries.size(); i++)
    {
        int x1 = queries[i][0];
        int y1 = queries[i][1];
        int x2 = queries[i][2];
        int y2 = queries[i][3];

        int num = arr[x1][y1];
        int minNum = 987654321;

        for (int j = x1; j < x2; j++)
        {
            arr[j][y1] = arr[j + 1][y1];
            minNum = min(minNum, arr[j][y1]);
        }
        for (int j = y1; j < y2; j++)
        {
            arr[x2][j] = arr[x2][j + 1];
            minNum = min(minNum, arr[x2][j]);
        }
        for (int j = x2; j > x1; j--)
        {
            arr[j][y2] = arr[j - 1][y2];
            minNum = min(minNum, arr[j][y2]);
        }
        for (int j = y2; j > y1 + 1; j--)
        {
            arr[x1][j] = arr[x1][j - 1];
            minNum = min(minNum, arr[x1][j]);
        }
        arr[x1][y1 + 1] = num;
        minNum = min(minNum, arr[x1][y1 + 1]);

        answer.push_back(minNum);
    }

    return answer;
}
profile
의 공부 노트.

0개의 댓글