[C언어 코드업 문제풀이] CodeUp 1506 : 2차원 배열 채우기 4(역달팽이 배열)
ET의 공부/C언어 연습문제[ 코드업 ]2020. 5. 5. 09:33
코드업 1506번 2차원 배열 채우기4(역달팽이 배열) 문제 풀이 해답입니다.
1. 문제 설명
평소 호기심이 많은 남호는 정보고 사이트에 있는 달팽이 배열 문제를 다르게 만들고 싶었다.
입력 예시와 출력 예시를 참고 하여 n을 입력 받아 출력하는 프로그램을 작성하시오.
2. 입력
배열의 크기 n이 입력된다. (n은 15보다 작은 홀수)
3. 출력
역 달팽이 배열을 출력한다.
4. 입력 예시
5
5. 출력 예시
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9
6. 문제 풀이
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#include "stdio.h"
int main(void)
{
int Arr[101][101] = {};
int n;
scanf("%d", &n);
int x = 1;
int i = 1;
int j = 1;
int Xaxis = -1;
int Yaxis = 1;
for(int k = 1; k <= n*n; k++){
Arr[i][j] = x;
x++;
if( j <=n && Xaxis == 1 && Yaxis == 1){ //우측
if(j+1 <= n && Arr[i][j+1] == 0){j++;}
else{
i--;
Yaxis = -1;
}
}
else if( i <=n && Xaxis == -1 && Yaxis == 1){ //아래로
if(i+1 <= n && Arr[i+1][j] == 0){i++;}
else{
j++;
//Yaxis = -1;
Xaxis = 1;
}
}
else if( j >=1 && Xaxis == -1 && Yaxis == -1){ //왼쪽
if(j-1 > 0 && Arr[i][j-1] == 0){j--;}
else{
i++;
Yaxis = 1;
}
}
else if(i >=1 && Yaxis == -1 && Xaxis == 1 ){ //위로
if(i-1 >0 & Arr[i-1][j] == 0){
i--;}
else{
j--;
Xaxis = -1;
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
printf("%d ",Arr[i][j]);
}
printf("\n");
}
return 0;
}
|
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1508 : 나도 IQ 150 (0) | 2020.05.10 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1507 : 4개의 직사각형 넓이 (0) | 2020.05.05 |
[C언어 코드업 문제풀이] CodeUp 1505 : 2차원 배열 채우기 3(달팽이 배열) (0) | 2020.05.05 |
[C언어 코드업 문제풀이] CodeUp 1504 : 지그재그 배열 2 (0) | 2020.05.05 |
[C언어 코드업 문제풀이] CodeUp 1503 : 지그재그 입력(2차원 배열) (0) | 2020.05.05 |
댓글()