<1465>
Q.다음과 같은 n*m 배열 구조를 출력해보자.
입력이 3 4인 경우 다음과 같이 출력한다.
9 10 11 12
5 6 7 8
1 2 3 4
입력이 4 5인 경우는 다음과 같이 출력한다.
16 17 18 19 20
11 12 13 14 15
6 7 8 9 10
1 2 3 4 5
입력이 n m인 경우의 2차원 배열을 출력해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include<stdio.h>
int main()
{
int a, n, m, arr[100][100];
scanf("%d %d", &n, &m); //가로, 세로 입력
a = n * m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
arr[i][j] = a; //배열에 값 지정
a--; //a값 감소
}
}
for (int i = 0; i < n; i++)
{
for (int j = m - 1; j >= 0; j--) //j 거꾸로
{
printf("%d ", arr[i][j]); //배열 출력
}
printf("\n"); //줄 바꾸기
}
}
|
cs |
입력이 3 4인 경우 다음과 같이 출력한다.
12 9 6 3
11 8 5 2
10 7 4 1
입력이 4 5인 경우는 다음과 같이 출력한다.
20 16 12 8 4
19 15 11 7 3
18 14 10 6 2
17 13 9 5 1
입력이 n m인 경우의 2차원 배열을 출력해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include<stdio.h>
int main()
{
int a, n, m, arr[100][100];
scanf_s("%d %d", &n, &m); //세로,가로 입력
a = n * m;
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++)
{
arr[i][j] = a; //배열에 값 지정
a--; //a값 감소
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j <m; j++)
{
printf("%d ", arr[j][i]); //반대로 배열 출력
}
printf("\n"); //줄 바꾸기
}
}
|
cs |
<1467>
입력이 3 4인 경우 다음과 같이 출력한다.
10 7 4 1
11 8 5 2
12 9 6 3
입력이 4 5인 경우는 다음과 같이 출력한다.
17 13 9 5 1
18 14 10 6 2
19 15 11 7 3
20 16 12 8 4
입력이 n m인 경우의 2차원 배열을 출력해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include <stdio.h>
int main() {
int n, m, k = 1, arr[100][100] = {0,};
scanf("%d", &n);//세로입력
scanf("%d", &m);//가로입력
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {//가로와 세로의 줄 개수를 반대로하여 배열에 입력
arr[i][j] = k;
k++;//k를 1씩 늘려가며 배열에 저장
}
}
for (int i = 0; i <n; ++i) {//세로는 그대로
for (int j = m-1; j >= 0; --j) {//가로는 반대로 출력
printf("%d ", arr[j][i]);
}
printf("\n");//개행
}
}
|
cs |
두 개씩 묶어 비교한 후, 작은 값만 들어간 배열을 만들고 출력해보자.
6개의 데이터가 다음과 같이 입력되었을 때,
1 2 3 4 5 6
아래와 같이 출력하면 된다.
1 3 5
k번째 위치에 저장되어야 하는 값은 다음과 같이 표현할 수도 있다.
m[k] = min(m[2*k], m[2*k+1]); //k >= 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h>
int main(){
int n, arr[100], k = 100;
scanf("%d", &n); //입력받을 개수
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]); //배열에 입력
}
for (int j = 0; j < n; j++)
{
if (j % 2 == 1) //2번째 수일때 실행
{
if (arr[j] > arr[j - 1]) //비교
k = arr[j - 1];
else
k = arr[j]; //비교한 후 작은 수를 k에 입력
printf("%d ", k); //k 출력
}
}
}
|
cs |
두 개씩 묶어 비교한 후, 큰 값만 들어간 배열을 만들고 출력해보자.
6개의 데이터가 다음과 같이 입력되었을 때,
1 2 3 4 5 6
아래와 같이 출력하면 된다.
2 4 6
k번째 위치에 저장되어야 하는 값은 다음과 같이 표현할 수도 있다.
m[k] = max(m[2*k], m[2*k+1]); //k >= 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include<stdio.h>
int main()
{
int n, arr[100], a = 100;
scanf("%d", &n); //입력받음
for (int i = 0; i < n; i++){
scanf("%d", &arr[i]); //배열 입력
}
for (int j = 0; j < n; j++){
if (j % 2 == 1) //2번째 수d 실행
{
if (arr[j] > arr[j - 1]) //비교
a = arr[j];
else
a = arr[j - 1]; //큰 수를 a에 입력
printf("%d ", a); //a 출력
}
}
}
|
cs |
'Nefus' 카테고리의 다른 글
리눅스 숙제 (0) | 2018.06.18 |
---|---|
Nefus과제(7)-배열,포인터,구조체,반복문 이용 (0) | 2018.06.06 |
Nefus-게임 프로젝트 (0) | 2018.05.14 |
Nefus 과제(6) (0) | 2018.04.06 |
Nefus 과제(4) (0) | 2018.04.06 |