250x250
Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- date
- List
- spring boot
- Properties
- CSS
- alter
- 리소스모니터링
- BFS
- GC로그수집
- math
- 큐
- scanner
- NIO
- html
- JPA
- 스택
- 스프링부트
- Java
- deque
- javascript
- set
- dfs
- map
- union_find
- Union-find
- priority_queue
- string
- Calendar
- sql
- 힙덤프
Archives
- Today
- Total
매일 조금씩
Leet code (Medium): 48. Rotate Image - JAVA 본문
728x90
반응형
주어진 matrix를 보고, 특징 파악을 먼저 해야한다.
처음 파악한 특징은 문제에 언급된 대로 90도 회전한 형태가 된다는건데..
이를 그대로 코드로 짜기란 복잡하고 어렵다.
따라서 '회전' 보다는 '스왑', '대칭이동' 과 같은 동작으로 특징을 파악해야한다.
그럼 칸들을 가운데 가로선을 기준으로 대칭이동 시킨 다음,
(0,0) -> (n,n)으로 향하는 대각선을 기준으로 한번더 대칭이동 시킨 형태라는 것을 알 수 있다.
다음은 그 방식으로 풀어낸 코드이다.
class Solution {
public void rotate(int[][] matrix) {
int edgeLength = matrix.length;
int top = 0;
int bottom = edgeLength - 1;
// 가운데 가로선 기준 반전시키기
while(top < bottom){
for(int col = 0; col < edgeLength; col++){
int temp = matrix[top][col];
matrix[top][col] = matrix[bottom][col];
matrix[bottom][col] = temp;
}
top++;
bottom--;
}
// 대각선 기준 반전시키기
for(int row = 0; row < edgeLength; row++){
for(int col = row + 1; col < edgeLength; col++){
int temp = matrix[row][col];
matrix[row][col] = matrix[col][row];
matrix[col][row] = temp;
}
}
}
}
728x90
반응형
'알고리즘 > Matrix' 카테고리의 다른 글
Leet code (Medium): 79. Word Search(DFS) - JAVA (0) | 2024.10.22 |
---|---|
Leet code (Medium): 54. Spiral Matrix - JAVA (0) | 2024.10.21 |
Leet code (Medium): 73. Set Matrix Zeroes - JAVA (0) | 2024.10.21 |