개발 공부/알고리즘 문제 풀이

[LeetCode] 48. Rotate Image

종범2 2021. 6. 28. 01:15

문제

LeetCode 48. Rotate Image

https://leetcode.com/problems/rotate-image/

 

Rotate Image - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

언어

자바스크립트(JavaScript)

 

접근 방법

  1. 가장 밖 테두리의 숫자들 배열을 먼저 바꾸며 점점 작은 테두리의 숫자들 배열을 바꾼다.
  2. 테두리의 숫자들 배열을 바꿀 때 왼쪽 위의 숫자부터 오른쪽 위의 숫자까지 차례로 배열을 바꾼다.

코드

/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
var rotate = function(matrix) {
    let size = Math.ceil(matrix.length /2);
    for (let i=0; i<size; i++){
        let rIdx = (size-1) - i;
        let cIdx = (size-1) - i;
        let len = 2*i + (matrix.length%2 === 0? 1 : 0);
        for (let j=0; j< len; j++){
            let temp = matrix[rIdx][cIdx + j];
            matrix[rIdx][cIdx + j] = matrix[rIdx+ len - j][cIdx];
            matrix[rIdx+ len - j][cIdx] = matrix[rIdx+ len][cIdx + len - j];
            matrix[rIdx+ len][cIdx + len - j] = matrix[rIdx + j][cIdx + len];
            matrix[rIdx + j][cIdx + len] = temp;
        };
    };
    return matrix;
};

결과

Runtime: 76 ms, faster than 77.17% of JavaScript online submissions for Rotate Image.

Memory Usage: 39.2 MB, less than 21.67% of JavaScript online submissions for Rotate Image.

복기

  1. 너무 복잡한거 같아서 답이 아닌 줄 알았는데, 맞았다.
  2. 별도의 알고리즘 없이 차분하게 코드를 짜면 풀 수 있는 문제이다.