#include <string>
#include <vector>
using namespace std;
vector<int> answer;
int maxNum;
void turn_border(const vector<int>& queries, vector<vector<int>> &table);
vector<int> solution(int rows, int columns, vector<vector<int>> queries)
{
vector<vector<int>> table; //[y][x]
maxNum = rows * columns + 1;
//make_table
for (int y = 0; y < rows; y++)
{
vector<int> columns_table_temp;
for (int x = 0; x < columns; x++)
columns_table_temp.push_back(y * columns + x + 1);
table.push_back(columns_table_temp);
}
for (int i = 0; i < queries.size(); i++)
turn_border(queries[i], table);
return answer;
}
void turn_border(const vector<int>& queries, vector<vector<int>>& table)
{
int border_x[2] = { queries[1] - 1, queries[3] - 1 };
int border_y[2] = { queries[0] - 1, queries[2] - 1 };
int minNum = maxNum;
int lastNum = table[border_y[0]][border_x[0]];
minNum = min(minNum, lastNum);
//search_border
{
for (int y = border_y[0]; y < border_y[1]; y++)
{
table[y][border_x[0]] = table[y + 1][border_x[0]];
minNum = min(minNum, table[y][border_x[0]]);
}
for (int x = border_x[0]; x < border_x[1]; x++)
{
table[border_y[1]][x] = table[border_y[1]][x + 1];
minNum = min(minNum, table[border_y[1]][x]);
}
for (int y = border_y[1]; y > border_y[0]; y--)
{
table[y][border_x[1]] = table[y - 1][border_x[1]];
minNum = min(minNum, table[y][border_x[1]]);
}
for (int x = border_x[1]; x > border_x[0] + 1; x--)
{
table[border_y[0]][x] = table[border_y[0]][x - 1];
minNum = min(minNum, table[border_y[0]][x]);
}
table[border_y[0]][border_x[0] + 1] = lastNum;
}
answer.push_back(minNum);
}
풀이
- rows * columns 행렬을 만든다.
- 행렬의 세로 길이(행 개수) rows, 가로 길이(열 개수) columns임을 조심한다.
- 테두리를 탐색한다.
- 나중에 넣을 값을 저장해놓고 한 칸씩 빈공간으로 값을 밀어준다. 회전이 시계방향이 되도록.
- 순회를 하면서 가장 작은 값을 저장해준다.
https://programmers.co.kr/learn/courses/30/lessons/77485
'Algorithm > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 정수삼각형 (0) | 2021.12.31 |
---|---|
[C++] 프로그래머스 게임 맵 최단거리 (0) | 2021.12.30 |
[C++] 프로그래머스 N-Queen 재귀 (0) | 2021.11.15 |
[C++] 프로그래머스 [1차]추석트래픽 (0) | 2021.11.06 |
[C++] 프로그래머스 N으로표현 DP (0) | 2021.11.04 |