diff --git "a/khj20006/202511/21 PGM LV2 \354\202\274\352\260\201 \353\213\254\355\214\275\354\235\264.md" "b/khj20006/202511/21 PGM LV2 \354\202\274\352\260\201 \353\213\254\355\214\275\354\235\264.md" new file mode 100644 index 00000000..b299426f --- /dev/null +++ "b/khj20006/202511/21 PGM LV2 \354\202\274\352\260\201 \353\213\254\355\214\275\354\235\264.md" @@ -0,0 +1,37 @@ +```cpp +#include +using namespace std; + +const int dx[3] = {1,0,-1}; +const int dy[3] = {0,1,-1}; + +int N; +int arr[1000][1000]{}; +bool vis[1000][1000]{}; + +bool oob(int x, int y) { + return x<0 || x>=N || y<0 || y>x; +} + +void go(int x, int y, int value, int dir) { + if(value > N*(N+1)/2) return; + arr[x][y] = value; + vis[x][y] = true; + int xx = x + dx[dir]; + int yy = y + dy[dir]; + if(oob(xx,yy) || vis[xx][yy]) { + dir = (dir + 1) % 3; + xx = x + dx[dir]; + yy = y + dy[dir]; + } + go(xx,yy,value+1,dir); +} + +vector solution(int n) { + N = n; + go(0,0,1,0); + vector answer; + for(int i=0;i