정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
n은 1 이상 1,000 이하입니다.
arr
배열에 값을 저장하고 answer
배열에 순서에 맞게 저장했다.#include <iostream>
#include <vector>
using namespace std;
int arr[1000][1000];
int dx[] = {1,0,-1};
int dy[] = {0,1,-1};
vector<int> solution(int n) {
int x = -1, y = 0;
int num = 1;
int direction = 0;
int n_copied = n;
while(n>0){
for(int i=0; i<n; i++){
x += dx[direction%3];
y += dy[direction%3];
arr[x][y] = num++;
}
n--;
direction++;
}
vector<int> answer;
for(int i=0; i<n_copied; i++){
for(int j=0; j<i+1; j++){
answer.push_back(arr[i][j]);
}
}
return answer;
}