🛡️ 코딩테스트/🛡️ 코테 : 알고리즘
2차원 배열 / 행렬의 90도 회전
맨텀
2025. 1. 25. 12:29
회전으로 코드 축소하기
문제에 따라 행렬에 방향으로 로직을 짜는 경우가 생긴다.
예시문제 : 12100 - 2048(Easy)
https://www.acmicpc.net/problem/12100
보통 2방향이나 4방향의 로직을 중복해서 짤 필요는 없으므로
한 쪽 방향으로 코드를 작성한 후, 2차원 컨테이너를 회전시켜서 적용하는 것이 간편하다.
x축 y축 만 사용하는 경우 전치행렬만 만들면 되니 간단하지만
4방향을 체크해야하는 경우 90도 회전시켜주는 코드가 필요하다.
시계 방향으로 90도 회전
vector<vector<int>> rotated(width, vector<int>(height));
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
rotated[x][height - 1 - y] = matrix[y][x];
}
}
반시계 방향으로 90도 회전
vector<vector<int>> rotated(width, vector<int>(height));
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
rotated[width - 1 - x][y] = matrix[y][x];
}
}