본문 바로가기
코딩테스트/Leet Code

[LeetCode] 자바 48. Rotate Image

by 핸디(Handy) 2020. 8. 12.

문제는 '정렬을 시계방향으로 90도 회전하라' 입니다


첫번째.

class Solution {
	public void rotate(int[][] matrix) {
		int swap = 0;
		int size = matrix.length;
		int[][] swapMartix = deepCopy(matrix, matrix.length);
		for (int i = 0; i < size; i++) {
			for (int j = 0; j < size; j++) {
				matrix[j][size - 1 - i] = swapMartix[i][j];
			}

		}
	}
	public static int[][] deepCopy(int[][] original, int n) {
		if (original == null) {
			return null;
		}

		int[][] result = new int[n][n];
		for (int i = 0; i < original.length; i++) {
			System.arraycopy(original[i], 0, result[i], 0, original[i].length);
		}
		return result;
	}
}

아이디어는 '2차원 배열을 deepcopy해서 다시 덮어쓰자' 입니다.

이 아이디어의 구현을 위해 Array.clone()를 사용하여 Deep Copy(깊은복사)를 했습니다.

깊은 복사와 얕은 복사에 대해 이전 글에서 설명한 것이 있으니 확인해보세요.

2020/08/11 - [코딩테스트/Leet Code] - [LeetCode] 자바 581. Shortest Unsorted Continuous Subarray

 

두번째. 

하지만 문제를 보니 조건중에 다른 2차원 배열을 할당하지 말고 해결하라는 추가 조건이 있어 다른 아이디어가 생각나면 추가하겠습니다.

댓글