데일리 codeup/이차원 배열

순서대로 채우기, 격자로서의 2차원 배열_220713

hayo_su 2022. 7. 13. 22:16

순서대로 채우기


배열로 사각형 만들기

배열을 만들어서 아래 조건을 만족해 출력하는 프로그램을 작성해보세요.

  • 첫 번째 행과 첫 번째 열은 모두 1로 초기화 합니다.
  • 나머지 칸들은 바로 위의 값과 바로 왼쪽의 값을 더합니다.
  • 크기는 5 * 5 입니다
#include <iostream>
using namespace std;
int main(){
    int arr[5][5];
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            if(i==0||j==0)  arr[i][j] = 1;
            else    arr[i][j] = arr[i-1][j]+ arr[i][j-1];
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++)    cout<<arr[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

파스칼의 삼각형

행의 크기가 정수 n으로 주어집니다. 행의 크기가 n인 파스칼 삼각형을 출력하는 프로그램을 작성해보세요. 파스칼 삼각형이란 다음과 같은 형태로 나타나며, (i, j)에 적힌 숫자가 (i - 1, j - 1)에 적힌 숫자와 (i - 1, j)에 적힌 숫자의 합으로 나타납니다.

n = 5일때의 예

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
#include <iostream>
using namespace std;
int main(){
    int n;
    cin >> n;
    int arr[n][n];
    for(int i=0;i<n;i++){
        for(int j=0;j<i+1;j++){
            if(j==0||i==j)  arr[i][j] = 1;
            else    arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<i+1;j++)    cout<<arr[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

격자로 사각형 만들기

아래 조건을 만족하도록 격자를 만들어 출력하는 프로그램을 작성해보세요.

  • 첫 번째 행과 첫 번째 열에는 모두 1이 들어갑니다.
  • 나머지 칸들은 바로 위의 값과 바로 왼쪽 값, 그리고 왼쪽 위의 값의 합이 되어야 합니다.
  • 크기는 n x n 입니다.

입력

5

출력:

1 1 1 1 1
1 3 5 7 9
1 5 13 25 41
1 7 25 63 129
1 9 41 129 321
#include <iostream>
using namespace std;
int main(){
    int n;
    cin >> n;
    int arr[n][n];
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(i==0||j==0)  arr[i][j] = 1;
            else    arr[i][j] = arr[i-1][j] + arr[i][j-1]+arr[i-1][j-1];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)    cout<<arr[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

격자로서의 2차원 배열


동전이 있는 위치

n * n 크기의 격자 위에 m개의 동전이 각각 어느 위치에 있는지 주어졌을 때, 현재 격자의 상태를 출력하는 프로그램을 작성해보세요.

입력

2 3
1 1
1 2
2 2

출력

1 1
0 1
#include <iostream>
using namespace std;
int main(){
    int n,m,r,c;
    cin >> n >> m;
    int arr[n][n] = {};
    for(int i=0;i<m;i++){
        cin >> r >> c;
        arr[r-1][c-1] = 1;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)    cout<<arr[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

격자에 점 그리기

m개의 점이 주어졌을 때 각각의 점을 n * n 크기의 격자에 번호를 표시하여 출력하는 프로그램을 작성해보세요. 점의 번호는 정보가 따로 주어지진 않고 입력된 순서대로 부여됩니다. 즉 첫 번째로 입력된 점은 1, k번째로 입력된 점은 k입니다.

입력

2 3
1 1
1 2
2 2

출력

1 2
0 3
#include <iostream>
using namespace std;
int main(){
    int n,m,r,c,cnt = 1;
    cin >> n >> m;
    int arr[n][n] = {};
    for(int i=0;i<m;i++){
        cin >> r >> c;
        arr[r-1][c-1] = cnt;
        cnt++;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)    cout<<arr[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

격자 모양 출력하기

n x n 크기의 격자의 칸 위에 m 개의 점이 놓여져 있습니다.

각 점의 크기는 해당 칸의 행 번호와 열 번호의 곱이 됩니다.

각 점의 위치에 해당하는 정보가 주어질 때, 격자의 모양을 출력하는 프로그램을 작성해보세요.

단, 행과 열의 번호는 1부터 시작됩니다.

입력

3 3
1 1
3 2
3 3

출력

1 0 0
0 0 0
0 6 9
#include <iostream>
using namespace std;
int main(){
    int n,m,r,c;
    cin >> n >> m;
    int arr[n][n] = {};
    for(int i=0;i<m;i++){
        cin >> r >> c;
        arr[r-1][c-1] = r*c;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)    cout<<arr[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}