• [LeetCode] 59. Spiral Matrix II

    2022. 1. 15.

    by. ํ•ด๋Š”์„ 

    ์ผ๋ช… ๋‹ฌํŒฝ์ด๋ฌธ์ œ! 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;
        }
    };

    '๐Ÿ“šSTUDY > ๐Ÿ‘€ coding test๋Œ€๋น„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [LeetCode] 2. Add Two Numbers  (0) 2022.01.15
    [LeetCode] 328. Odd Even Linked List  (0) 2022.01.15
    [๋ฐฑ์ค€] 1158๋ฒˆ ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ  (0) 2020.02.08

    ๋Œ“๊ธ€