[프로그래머스 C++] 행렬 테두리 회전하기
[프로그래머스 C++] 행렬 테두리 회전하기
https://school.programmers.co.kr/learn/courses/30/lessons/77485
해결전략
구현, 브루트 포스 Brute Force
행렬 회전, 시뮬레이션
정답 코드
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int>> v;
vector<int> answer;
void Rotate(int x1, int y1, int x2, int y2, int r, int c)
{
int minNum = 2147000000;
vector<vector<int>> temp(r, vector<int>(c));
temp = v;
for (int i = y1 + 1; i <= y2; i++) {
temp[x1][i] = v[x1][i - 1];
minNum = min(minNum, temp[x1][i]);
}
for (int i = x1 + 1; i <= x2; i++) {
temp[i][y2] = v[i - 1][y2];
minNum = min(minNum, temp[i][y2]);
}
for (int i = y2 - 1; i >= y1; i--) {
temp[x2][i] = v[x2][i + 1];
minNum = min(minNum, temp[x2][i]);
}
for (int i = x2 - 1; i >= x1; i--) {
temp[i][y1] = v[i + 1][y1];
minNum = min(minNum, temp[i][y1]);
}
v = temp;
answer.push_back(minNum);
}
vector<int> solution(int r, int c, vector<vector<int>> qu) {
v.resize(r, vector<int>(c));
int a = 1;
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
v[i][j] = a++;
int n = qu.size();
for (int i = 0; i < n; i++)
{
int x1 = qu[i][0] - 1;
int y1 = qu[i][1] - 1;
int x2 = qu[i][2] - 1;
int y2 = qu[i][3] - 1;
Rotate(x1, y1, x2, y2, r, c);
}
return answer;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 시소 짝꿍 (1) | 2023.12.08 |
---|---|
[프로그래머스 C++] 배달 (0) | 2023.12.07 |
[프로그래머스 C++] 줄 서는 방법 (0) | 2023.11.29 |
[프로그래머스 C++] 마법의 엘리베이터 (0) | 2023.11.24 |
[프로그래머스 C++] 수식 최대화 (0) | 2023.11.23 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 시소 짝꿍
[프로그래머스 C++] 시소 짝꿍
2023.12.08 -
[프로그래머스 C++] 배달
[프로그래머스 C++] 배달
2023.12.07 -
[프로그래머스 C++] 줄 서는 방법
[프로그래머스 C++] 줄 서는 방법
2023.11.29 -
[프로그래머스 C++] 마법의 엘리베이터
[프로그래머스 C++] 마법의 엘리베이터
2023.11.24