정사각형의 한 변의 길이 n을 입력받은 후 다음과 같이 숫자로 된 정사각형 형태로 출력하는 프로그램을 작성하시오.
< 처리조건 >
숫자의 진행 순서는 처음에 왼쪽 위에서 아래쪽으로 n만큼 진행 한 후 바로 오른쪽 위에서 다시 아래쪽으로 진행하는 방법으로 정사각형이 될 때까지 반복한다.
정사각형 한 변의 길이 n(n의 범위는 100 이하의 자연수)을 입력받는다.
위의 형식과 같이 한 변의 길이가 n인 숫자 사각형을 출력한다. 숫자 사이는 공백으로 구분하여 출력한다.
[Copy]
4 |
[Copy]
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16 |
처음에 예제만 보고서는 당황할 수 있지만 조금 천천히 생각해보면 숫자의 진행이 가로로 4씩 증가하는 것을 확인할 수 있습니다.
그것을 이용하면 배열을 사용하지 않고 곧바로 출력할 수 있습니다.
그러나 배열을 이용하면 훨씬 쉽게 해결이 가능한데, 단순하게 위에서 아래로 진행하면 됩니다.
단순한 예제지만 여러 방법을 생각해서 진행하는 것으로도 충분히 공부가 많이 될 수 있을것 같네요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
#include <iostream>
using namespace std;
int main(void) {
int n; // 정사각형 한 변의 길이 n
cin >> n;
for (int i = 0; i < n; i++) {
int num = i+1;
for (int j = 0; j < n; j++) {
cout << num << " ";
// 좌에서 우로 진행 시 증가 값은 n씩이다.
num += n;
}
cout << endl;
}
}
|
cs |
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 |
#include <iostream>
using namespace std;
int main(void)
{
int n; // 정사각형 한 변의 길이 n
int num = 1; // 숫자 정사각형에 들어갈 숫자
int arr[100][100]; // 정사각형을 나타낼 배열
cin >> n;
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
arr[j][i] = num++;
}
}
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
cout << arr[i][j] << ' ';
}
cout << endl;
}
}
|
cs |
JUNGOL) 문제은행) 실력키우기) 숫자사각형3