728x90
달팽이숫자?
N*N 배열의 숫자가 달팽이모양으로 채워지는 것을 의미.
EX) N=3 일때
1 2 3
8 9 4
7 6 5
처음접했더니 조금 골치 아팠다. 내 코드가 원시적인거 같기도 하고,
분명 더 똑똑한 방법이 많을듯...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#include<iostream> #define MAX_N 10 using namespace std; int arr[MAX_N][MAX_N] = {0}; void snail(int N)
{
int nowx=0;
int nowy=0;
int cnt=1;
for(int t=0; t<N; t++)
{
for(int col=nowy; col<N; col++)
{
if(!arr[nowx][col])
{
arr[nowx][col] = cnt++;
nowy = col;
}
} // right
for(int row=nowx; row<N; row++)
{
if(!arr[row][nowy])
{
arr[row][nowy] = cnt++;
nowx = row;
}
} // down
for(int col=nowy; col>=0; --col)
{
if(!arr[nowx][col])
{
arr[nowx][col] = cnt++;
nowy = col;
}
} // left
for(int row=nowx; row>=0; --row)
{
if(!arr[row][nowy])
{
arr[row][nowy] = cnt++;
nowx = row;
}
} // up
}
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
cout<< arr[i][j] << " ";
arr[i][j] = 0;
}
cout<<"\n";
}
}
|
cs |
여러 방법이 있겠지만 for문 이용하여
오른쪽 아래 왼쪽 위 순으로 배열이 비어있는 경우 채워나가는 방식
'프로그래밍 > programmers&bj' 카테고리의 다른 글
[C++] 백준 1012번 유기농 배추 (0) | 2020.07.07 |
---|---|
[C++][알고리즘] 백준 1003번 피보나치 함수 (0) | 2020.06.06 |
[C++][알고리즘] 프로그래머스:: 정수 삼각형 (0) | 2020.04.25 |
[C++][알고리즘] 프로그래머스:: 2 x n 타일링 (0) | 2020.04.18 |
[C++][알고리즘] 프로그래머스:: N으로 표현 (0) | 2020.04.15 |