๐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;
}
};