728x90
my full code
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int rows, int columns, vector<vector<int>> queries) {
vector<int> answer;
vector<vector<int>> matrix;
int cnt = 1;
for(int i=0; i<rows; i++){
vector<int> temp;
for(int j=0; j<columns; j++){
temp.push_back(cnt);
cnt++;
}
matrix.push_back(temp);
}
vector<int> dir_x = {0, 1, 0, -1};
vector<int> dir_y = {1, 0, -1, 0};
for(auto q: queries){
int x1 = q[0]-1, y1 = q[1]-1, x2 = q[2]-1, y2 = q[3]-1;
int i = x1, j = y1;
int min_val = matrix[x1+1][y1];
int bf = matrix[x1+1][y1];
int temp, idx = 0;
while(idx<4){
temp = matrix[i][j];
matrix[i][j] = bf;
bf = temp;
if(min_val > bf) min_val = bf;
if(i+dir_x[idx] > x2 || i+dir_x[idx] < x1 ||
j+dir_y[idx] > y2 || j+dir_y[idx] < y1) idx++;
i += dir_x[idx];
j += dir_y[idx];
}
answer.push_back(min_val);
}
return answer;
}
문제
https://programmers.co.kr/learn/courses/30/lessons/77485?language=cpp
코딩테스트 연습 - 행렬 테두리 회전하기
6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3]
programmers.co.kr
728x90
[접근1]
행렬을 1부터 차례대로 넣어 초기화해준다.
for(int i=0; i<rows; i++){
vector<int> temp;
for(int j=0; j<columns; j++){
temp.push_back(cnt);
cnt++;
}
matrix.push_back(temp);
}
[접근2]
바꿀 숫자의 위치를 시계방향으로 이동시킬 벡터를 만들어준다.
vector<int> dir_x = {0, 1, 0, -1};
vector<int> dir_y = {1, 0, -1, 0};
[접근3]
query를 돌면서
각 query에 해당하는 테두리를 dir_x와 y를 이용해 돌아준다.
테두리를 벗어나면 방향을 바꿔주고, 모든 방향으로 다 돌았을 경우 while문을 빠져나온다.
돌면서 모든 숫자를 비교하여 동시에 최솟값도 찾는다.
for(auto q: queries){
... (값 선언 및 초기화)
while(idx<4){
temp = matrix[i][j];
matrix[i][j] = bf;
bf = temp;
if(min_val > bf) min_val = bf;
if(i+dir_x[idx] > x2 || i+dir_x[idx] < x1 ||
j+dir_y[idx] > y2 || j+dir_y[idx] < y1) idx++;
i += dir_x[idx];
j += dir_y[idx];
}
answer.push_back(min_val);
}728x90
'coding > algorithm' 카테고리의 다른 글
| [programmers] Lv.3 N으로 표현(c++) (0) | 2022.07.01 |
|---|---|
| [programmers] Lv.2 짝지어 제거하기(c++) (0) | 2022.07.01 |
| [programmers] Lv.1 체육복(c++) (0) | 2022.06.28 |
| [programmers] Lv.2 더 맵게(c++) (0) | 2022.06.27 |
| [programmers] Lv.2 기능개발(c++) (0) | 2022.06.27 |
댓글