๐Ÿ“šSTUDY/๐Ÿ‘€ coding test๋Œ€๋น„

[LeetCode] 59. Spiral Matrix II

ํ•ด๋Š”์„  2022. 1. 15. 13:49

์ผ๋ช… ๋‹ฌํŒฝ์ด๋ฌธ์ œ! 1ํ•™๋…„๋•Œ ๋™์•„๋ฆฌ์—์„œ ํ’€์—ˆ๋˜ ๊ธฐ์–ต์ด ์ƒˆ๋ก์ƒˆ๋ก ๋‚ฌ๋‹ค. ์ด ๋ฌธ์ œ๋Š” n์˜ ์ˆ˜์— ๋”ฐ๋ผ nxn ๋ชจ์–‘์˜ matrix๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ์•ˆ์— ๋‹ฌํŒฝ์ด ๊ป์งˆ ์ฒ˜๋Ÿผ ๋‚˜์„ ํ˜•์œผ๋กœ ์ˆซ์ž๋ฅผ ์ฑ„์›Œ์ค˜์•ผ ํ•œ๋‹ค.

 

์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ์œผ๋‚˜, ์—ฌ๊ธฐ์„œ๋Š” ๊บฝ์—ฌ์•ผ ํ•˜๋Š” ๋ชจ์„œ๋ฆฌ ์ ์— ๋„๋‹ฌํ–ˆ๋Š”์ง€๋ฅผ ์กฐ๊ฑด์œผ๋กœ ๋„ฃ๊ณ , ๋„๋‹ฌํ–ˆ๋‹ค๋ฉด ๋ฐฉํ–ฅ์„ ๊บพ์–ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์ดํ–ˆ๋‹ค.

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> mat (n, vector<int>(n));
        int row = 0;
        int col = 0;
        int max = n-1;
        int direc = 0; // -> / v / <- / ^
        
        for (int i=0; i<n*n; i++){
            if (row == max && col == max || row == max && col == direc/4 || row == direc/4 && col == max || i!=0 && row == direc/4 + 1 && col == direc/4){
                direc++;
                if (direc%4 == 0) max--;
            }
            
            mat[row][col] = i + 1;
            if (direc%4 == 0) col++; //->
            else if (direc%4 == 1) row++; // v
            else if (direc%4 == 2) col--; // <-
            else if (direc%4 == 3) row--; // ^
        }
        return mat;
    }
};