2차원 리스트를 반시계방향으 90도 돌리는 함수 템플릿이다.
자주 사용될 것 같아 template으로 등록한다.
java, python을 이용한 코드는 많지만 c++을 이용한 코드는 찾기 어려워 따로 정리한다.
시계방향으로 90도 돌리고 싶은 경우 해당함수를 3번 돌리자.
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int> > rotate_a_matrix_by_90_degree(vector<vector<int> > &graph)
{
int row_len = graph.size();
int col_len = graph[0].size();
vector<vector<int> > res(col_len, vector<int>(row_len, 0));
for (int i = 0; i < row_len; i++) {
for (int j = 0; j < col_len; j++) {
res[col_len-j-1][i] = graph[i][j];
}
}
return res;
}
int main(void) {
vector<int> t1 = {1,2,3,4};
vector<int> t2 = {5,6,7,8};
vector<int> t3 = {9,10,11,12};
vector<vector<int> > a = {t1, t2, t3};
// 반시계 방향 90도 돌리기
vector<vector<int> > b = rotate_a_matrix_by_90_degree(a);
for (int i = 0; i < b.size(); i++) {
for (int j = 0; j < b[i]. size(); j++) {
cout << b[i][j] << " ";
}
cout << endl;
}
// 시계 방향 90도 돌리기 = 반시계 방향 90도* 3 돌리기
vector<vector<int> > c = rotate_a_matrix_by_90_degree(a);
vector<vector<int> > d = rotate_a_matrix_by_90_degree(c);
vector<vector<int> > e = rotate_a_matrix_by_90_degree(d);
for (int i = 0; i < e.size(); i++) {
for (int j = 0; j < e[i]. size(); j++) {
cout << e[i][j] << " ";
}
cout << endl;
}
return 0 ;
}
'알고리즘 > Template' 카테고리의 다른 글
[Algorithm][Template] Prefix Sum, 구간 합 계산 (0) | 2022.01.20 |
---|---|
[Algorithm][Template] 투 포인터 (0) | 2022.01.20 |
[Algorithm][Template] 소수의 판별 (0) | 2022.01.20 |
[Algorithm][Template] 위상 정렬(Topology Sort) (0) | 2022.01.15 |
[Algorithm][Template] 크루스칼 알고리즘 (0) | 2022.01.03 |