반응형

대각선(빗금) 채우기


알고리즘


KOISTUDY 1725

Background

다음과 같은 n*m 배열 구조를 출력해보자.

입력이 3 4인 경우 다음과 같이 출력한다.
1 3 6 9
2 5 8 11
4 7 10 12

입력이 4 5인 경우는 다음과 같이 출력한다.
1 3 6 10 14
2 5 9 13 17
4 8 12 16 19
7 11 15 18 20

입력이 n m인 경우의 2차원 배열을 출력해보자.

Input

첫 번째 줄에 배열의 크기 n, m이 공백을 두고 입력된다.
[입력값의 정의역]
1 <= n,m <= 100

Output

n*m 크기의 배열을 설명과 같이 채워 출력한다.

IO Example

입력1
1 3

출력1
1 2 3

입력2
2 3

출력2
1 3 5
2 4 6 


int main()
{
	int arr[100][100];
	int n, m, num = 0;
	scanf("%d %d", &n, &m);
	
	for (int spin = 0; spin < n+m-1; spin++)
	{
		for (int x = 0; x < m; x++)
		{
			int y = spin - x;
			
			if (y >= 0 && y < n)
			{
				arr[y][x] = ++num;
			}
		}
	}

	for (int y = 0; y < n; y++)
	{
		for (int x = 0; x < m; x++)
		{
			printf("%d ", arr[y][x]);
		}
		printf("\n");
	}
}
KOISTUDY 1726

Background

다음과 같은 n*m 배열 구조를 출력해보자.

입력이 3 4인 경우 다음과 같이 출력한다.
1 2 4 7
3 5 8 10
6 9 11 12

입력이 4 5인 경우는 다음과 같이 출력한다.
1 2 4 7 11
3 5 8 12 15
6 9 13 16 18
10 14 17 19 20

입력이 n m인 경우의 2차원 배열을 출력해보자.

Input

첫 번째 줄에 배열의 크기 n, m이 공백을 두고 입력된다.
[입력값의 정의역]
1 <= n,m <= 100

Output

n*m 크기의 배열을 설명과 같이 채워 출력한다.

IO Example

입력1
1 3

출력1
1 2 3

입력2
2 3

출력2
1 2 4
3 5 6 


int main()
{
	int arr[100][100];
	int n, m, num = 0;
	scanf("%d %d", &n, &m);
	
	for (int spin = 0; spin < n+m-1; spin++)
	{
		for (int x = 0; x < n; x++)
		{
			int y = spin - x;
			
			if (y >= 0 && y < m)
			{
				arr[x][y] = ++num;
			}
		}
	}

	for (int y = 0; y < n; y++)
	{
		for (int x = 0; x < m; x++)
		{
			printf("%d ", arr[y][x]);
		}
		printf("\n");
	}
}


KOISTUDY 1727

Background

다음과 같은 n*m 배열 구조를 출력해보자.

입력이 3 4인 경우 다음과 같이 출력한다.
7 4 2 1
10 8 5 3
12 11 9 6

입력이 4 5인 경우는 다음과 같이 출력한다.
11 7 4 2 1
15 12 8 5 3
18 16 13 9 6
20 19 17 14 10

입력이 n m인 경우의 2차원 배열을 출력해보자.

Input

첫 번째 줄에 배열의 크기 n, m이 공백을 두고 입력된다.
[입력값의 정의역]
1 <= n,m <= 100

Output

n*m 크기의 배열을 설명과 같이 채워 출력한다.

IO Example

입력1
1 3

출력1
3 2 1

입력2
2 3

출력2
4 2 1
6 5 3 




int main()
int abs(int n)
{
	if(n < 0)
	return n * -1;
	else
	return n;
}

int main()
{
	int arr[100][100];
	int n, m, num = 0;
	scanf("%d %d", &n, &m);
	
	for (int spin = 0; spin < n+m-1; spin++)
	{
		for (int x = 0; x < n; x++)
		{
			int y = spin - x;
			
			if (y >= 0 && y < m)
			{
				arr[x][abs(y-m)-1] = ++num;
			}
		}
	}

	for (int y = 0; y < n; y++)
	{
		for (int x = 0; x < m; x++)
		{
			printf("%d ", arr[y][x]);
		}
		printf("\n");
	}
}

반응형
Posted by kev1n
,