hwooo
LeetCode (C/C++, Java) 48. Rotate Image 본문
https://leetcode.com/problems/rotate-image/description/

풀이
결과적으로 봤을 때 한 번에 네 군데의 값이 바뀌므로
바깥쪽 바퀴부터 안쪽까지 순회하며 각 라인의 값을 저장한 후 한 번에 바꿨다.
C/C++ 코드
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
int size = matrix.size();
int leftIdx = 0, rightIdx = size - 1;
int l, r, u, d;
while (leftIdx < rightIdx) {
// u -> r -> d -> l
for (int i = leftIdx; i < rightIdx; i++) {
u = matrix[leftIdx][i];
d = matrix[rightIdx][size - i - 1];
l = matrix[size - i - 1][leftIdx];
r = matrix[i][rightIdx];
matrix[i][rightIdx] = u;
matrix[rightIdx][size - i - 1] = r;
matrix[size - i - 1][leftIdx] = d;
matrix[leftIdx][i] = l;
}
leftIdx++;
rightIdx--;
}
}
};
Java 코드
class Solution {
public void rotate(int[][] matrix) {
int size = matrix.length;
int leftIdx = 0, rightIdx = size - 1;
int l, r, u, d;
while (leftIdx < rightIdx) {
// u -> r -> d -> l
for (int i = leftIdx; i < rightIdx; i++) {
u = matrix[leftIdx][i];
d = matrix[rightIdx][size - i - 1];
l = matrix[size - i - 1][leftIdx];
r = matrix[i][rightIdx];
matrix[i][rightIdx] = u;
matrix[rightIdx][size - i - 1] = r;
matrix[size - i - 1][leftIdx] = d;
matrix[leftIdx][i] = l;
}
leftIdx++;
rightIdx--;
}
}
}'Study > Algorithm' 카테고리의 다른 글
| LeetCode (C/C++, Java) 49. Group Anagrams (0) | 2024.12.29 |
|---|---|
| 프로그래머스 (C/C++, Java) 43164 : 여행경로 (0) | 2024.12.25 |
| LeetCode (C/C++, Java) 39. Combination Sum (0) | 2024.12.19 |
| LeetCode (C/C++, Java) 23. Merge k Sorted Lists (0) | 2024.12.18 |
| LeetCode (C/C++, Java) 547. Number of Provinces (0) | 2024.12.17 |