[C언어 코드업 문제풀이] CodeUp 1479 : [기초-배열연습] 2차원 배열 빗금 채우기 3-4
ET의 공부/C언어 연습문제[ 코드업 ]2020. 5. 3. 09:20
코드업 1479번 2차원 배열 빗금 채우기 3-4 문제 풀이 해답입니다.
1. 문제 설명
다음과 같은 n*m 배열 구조를 출력해보자.
입력이 3 4인 경우 다음과 같이 출력한다.
9 6 3 1
11 8 5 2
12 10 7 4
입력이 4 5인 경우는 다음과 같이 출력한다.
14 10 6 3 1
17 13 9 5 2
19 16 12 8 4
20 18 15 11 7
입력이 n m인 경우의 2차원 배열을 출력해보자.
2. 입력
첫 번째 줄에 배열의 크기 n m이 입력된다.
[입력값의 정의역]
1<= n,m <= 100
3. 출력
n*m 크기의 배열을 설명과 같이 채워 출력한다.
4. 입력 예시
2 3
5. 출력 예시
5 3 1
6 4 2
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
|
#include "stdio.h"
int main(void)
{
int Arr[101][101] = {};
int n,m;
scanf("%d %d", &n, &m);
/*
14-(1,1)|10-(1,2)| 6-(1,3)| 3-(1,4)| 1-(1,5)
--------------------------------------------
17-(2,1)|13-(2,2)| 9-(2,3)| 5-(2,4)| 2-(2,5)
--------------------------------------------
19-(3,1)|16-(3,2)|12-(3,3)| 8-(3,4)| 4-(3,5)
--------------------------------------------
20-(4,1)|18-(4,2)|15-(4,3)|11-(4,4)| 7-(4,5)
*/
//대각선의 요소는 해당 요소가 (i,j)라면 (i-1, j-1),(i+1,j+1)
int x = 1;
int i = 1;
int j = m; //시작이 (1,m)에서 시작.
int temp_j = j;
int temp_i = i;
for(int k = 1; k <=n*m; k++){
if( ( i >= 1 && i <= n) && ( j >= 1 && j <= m) ){
Arr[i][j] = x;
x++;
i--;
j--;
if( !(( i >= 1 && i <= n) && ( j >= 1 && j <= m)) ){ //대각선이 밑으로(범위밖)으로 나갔을때
temp_i++; //아래로 시작점 이동
if(temp_i >n){ //범위 밖이면
temp_i = n;
temp_j--;
}
i = temp_i;
j = temp_j;
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m ; j++){
printf("%d ",Arr[i][j]);
}
printf("\n");
}
return 0;
}
|
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1481 : [기초-배열연습] 2차원 배열 빗금 채우기 3-6 (0) | 2020.05.03 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1480 : [기초-배열연습] 2차원 배열 빗금 채우기 3-5 (0) | 2020.05.03 |
[C언어 코드업 문제풀이] CodeUp 1478 : [기초-배열연습] 2차원 배열 빗금 채우기 3-3 (0) | 2020.05.03 |
[C언어 코드업 문제풀이] CodeUp 1477 : [기초-배열연습] 2차원 배열 빗금 채우기 3-2 (0) | 2020.05.03 |
[C언어 코드업 문제풀이] CodeUp 1476 : [기초-배열연습] 2차원 배열 빗금 채우기 3-1 (1) | 2020.05.02 |
댓글()