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 ;
}

+ Recent posts