삼각 달팽이
삼각형을 그리면서 달팽이를 순차적으로 만드는 문제로 진행 방향을 회전시켜서 만드는 문제이다.
처음에는 삼각형 모양의 데이터를 만드는데 집중했는데 실제 결과 데이터만 잘 만들면 된다.
중복 반복문을 통해서 진행 방향을 회전 시킨다.
처음에는 ↓(0,+1)으로 최대치까지 진행 이후에 →(+1,0) 방향, 그리고 ↖(-1,-1)으로 회전을 진행한다. n번만큼 회전을 하게 되면 끝난다. 순차적으로 value를 증가시키고 이후에 데이터가 존재하는 List를 리턴하는 것으로 진행한다.
URL : programmers.co.kr/learn/courses/30/lessons/68645#qna
using System.Collections.Generic;
public int[] solution(int n)
{
List<int> answer = new List<int>();
int[,] arr = new int[n, n];
int value = 1;
int x = -1;
int y = 0;
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
if (i % 3 == 0) //진행방향 ↓
x++;
else if (i % 3 == 1) // 진행방향 →
y++;
else if (i % 3 == 2) //진행방향 ↖
{
x--; y--;
}
arr[x, y] = value++;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (arr[i, j] == 0)
break;
answer.Add(arr[i, j]);
}
}
return answer.ToArray();
}
★☆☆☆☆
반응형
댓글