행렬 회전

2025. 9. 22. 17:49🧑🏻‍💻/C & C++

#include <vector>
using namespace std;

// 시계방향 90도 회전
vector<vector<int>> rotate_array_90(const vector<vector<int>>& array) {
    int n = array.size();
    int m = array[0].size();
    vector<vector<int>> rotated(m, vector<int>(n));
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            rotated[j][n - 1 - i] = array[i][j];
        }
    }
    return rotated;
}

// 시계방향 180도 회전
vector<vector<int>> rotate_array_180(const vector<vector<int>>& array) {
    int n = array.size();
    int m = array[0].size();
    vector<vector<int>> rotated(n, vector<int>(m));
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            rotated[n - 1 - i][m - 1 - j] = array[i][j];
        }
    }
    return rotated;
}

// 시계방향 270도 회전 ( == 반시계방향 90도 )
vector<vector<int>> rotate_array_270(const vector<vector<int>>& array) {
    int n = array.size();
    int m = array[0].size();
    vector<vector<int>> rotated(m, vector<int>(n));
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            rotated[m - 1 - j][i] = array[i][j];
        }
    }
    return rotated;
}

// 전치 행렬 (transpose)
vector<vector<int>> transpose_array(const vector<vector<int>>& array) {
    int n = array.size();
    int m = array[0].size();
    vector<vector<int>> transposed(m, vector<int>(n));
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            transposed[j][i] = array[i][j];
        }
    }
    return transposed;
}

'🧑🏻‍💻 > C & C++' 카테고리의 다른 글

[C++] map / multimap / unordered_map / unordered_multimap  (0) 2024.11.22
[C++] 순열, 조합  (0) 2024.10.05
[C++] vector  (0) 2024.09.28
[C++] Permutation, Combination  (0) 2024.08.10
[C] const  (0) 2022.09.15