삼각 달팽이

108번뇌·2021년 9월 24일
0

https://programmers.co.kr/learn/courses/30/lessons/68645

#include <string>
#include <vector>

using namespace std;
#define ROW 1001
#define COL 1001

int arr[ROW][COL] = { 0, };

int dirX[3] = { 0,1,-1 };
int dirY[3] = { 1,0,-1 };//아래,오른,대각위

vector<int> solution(int n) {
	vector<int> answer;

	int startX(0);
	int startY(0);
	int Loop(n);
	int startNum(1);
	for (int i = 0; i < Loop; i++)
	{
		int dir = i % 3;//방향3개
		for (int j = 0; j < n; j++)
		{
			if (i == 0 && j == 0)
			{
				arr[startY][startX] = startNum;
				startNum++;
				continue;
			}
			startX += dirX[dir];
			startY += dirY[dir];
			arr[startY][startX] = startNum;
			startNum++;

			if (j == n - 1)	n--;
		}
	}

	for (int i = 0; i < COL; i++)
	{
		for (int j = 0; j < ROW; j++)
		{
			if (arr[i][j] == 0)	break;
			else
			{
				answer.push_back(arr[i][j]);
			}
		}
	}

	return answer;
}
int main()
{

	vector<int> vTemp = solution(4);
	

	return 0;

}

n, n-1...1까지해서 총 n개만큼 루프는 돌리는거고,
3방향 갈때마다 방향 바꿔주는거 dirX/dirY설정하고,
2중루프중 마지막에서 if (j == n - 1) n--; 한다.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글