문제 : 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성하시오
풀이 : 처음엔 무슨 수학공식이 있는줄 알고 열심히 공식 만들어보다가 실패해서...구글링 참고하여 코딩하게 되었다..
나중에 java 할떄 다시 풀어보게 될것같다...ㅎ
조건 1 = 달팽이 안에 들어가는 수는 반드시 1~n 까지 합친것보다 작다!
조건 2 = ↓ → ↖ 순으로 배열(2차배열)을 채우게 된다!
public static int[] solution(int n)
{
List<int> answer = new List<int>();
int[,] arrays = new int[n,n];
int num = 1;
int x = -1, y = 0;
int sumNum = Enumerable.Range(1, n).Sum();
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--;
}
arrays[x, y] = num++;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (arrays[i, j] == 0) break;
answer.Add(arrays[i, j]);
}
}
return answer.ToArray();
}
'알고리즘 > C#' 카테고리의 다른 글
[C#] 예산 - 프로그래머스 (0) | 2020.10.20 |
---|---|
[C#] 하샤드 수 - 프로그래머스 (0) | 2020.10.19 |
[C#] 콜라츠 추측 - 프로그래머스 (0) | 2020.10.19 |
[C#] 최대 공약수와 최소 공배수 - 프로그래머스 (0) | 2020.10.19 |
[C#] 제일 작은 수 제거하기 - 프로그래머스 (0) | 2020.10.18 |