개발조각

[리트코드] 59. Spiral Matrix II 본문

알고리즘🅰/리트코드

[리트코드] 59. Spiral Matrix II

개발조각 2022. 11. 7. 13:20
728x90
반응형

문제

https://leetcode.com/problems/spiral-matrix-ii/

 

Spiral Matrix II - 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


문제 분석 및 설명

  1. 가로(row 방향), 세로(column방향)로 세트로 묶으면((가로, 세로), (가로, 세로)...) 총 3번이 나오고 마지막에 가로(row 방향)만 남는다.
    → 가로방향일때 반복문 종료문을 넣어주면 된다.
  2.  row 방향일때는 y값이 변화되고 column 방향일 때는 x값이 변화된다.
  3. 분기점마다(1번에서 총 3번의 분기점이 있다 했다.) direction이 변화한다.
  4. row 방향이 끝날때 마다 횟수가 줄어든다. 횟수가 0이면 반복문을 종료한다.

 

이것을 토대로 어떻게 코드가 어떻게 돌아가는지는 아래의 이미지를 보시면 알 것 같습니다.


소스코드

var generateMatrix = function(n) {
    let result = [];
    for(let i=0; i<n; i++) result.push([]);
    
    let direction = 1;
    let [x, y] = [0, -1]
    let num = 0;
    while(true){
        for(let row=0; row<n; row++){
            num++;
            y += direction;
            result[x][y] = num;
        }
        n--;
        
        if(n === 0) break;
        
        for(let col=0; col<n; col++){
            num++;
            x += direction;
            result[x][y] = num;
        }
        direction *= -1
    }
    return result;
};


알고리즘 순서도

728x90
반응형
Comments