ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2차원 배열과 패턴_220713
    데일리 codeup/이차원 배열 2022. 7. 13. 22:11

    아래로 사각형 채우기

    정사각형 한 변의 길이 n이 주어지면 아래 예와 같이 숫자로 된 정사각형 형태로 출력하는 프로그램을 작성해보세요.

    n에 3이 주어지는 경우

    1 4 7
    2 5 8
    3 6 9
    #include <iostream>
    using namespace std;
    int main(){
        int n;
        cin >> n;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                cout<< n*j+i+1<<' ';
            }
            cout<<endl;
        }
        return 0;
    }

    지그재그로 숫자 채우기

    n * m크기의 직사각형에 숫자를 0부터 순서대로 1씩 증가시키며 왼쪽 위에서부터 시작하여 다음과 같이 지그재그 모양으로 숫자들을 쭉 채우는 코드를 작성해보세요.

    입력

    5 5

    출력

    0 9 10 19 20 
    1 8 11 18 21 
    2 7 12 17 22 
    3 6 13 16 23 
    4 5 14 15 24
    #include <iostream>
    using namespace std;
    int main(){
        int n, m;
        cin >> n >> m;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(j%2==0)  cout<<n*j+i<<' ';
                else    cout<<n*(j+1)-1-i<<' ';
            }
            cout<<endl;
        }
        return 0;
    }

    대각선으로 숫자 채우기

    n * m크기의 직사각형에 숫자를 1부터 순서대로 1씩 증가시키며 왼쪽 위에서부터 시작하여 오른쪽 아래 쪽까지 다음과 같은 방향으로 숫자들을 쭉 채우는 코드를 작성해보세요.

    입력

    3 5

    출력

    1 2 4 7 10
    3 5 8 11 13
    6 9 12 14 15
    #include <iostream>
    using namespace std;
    int main(){
        int n, m, lim,cnt = 1;
        cin >> n >> m;
        int arr[n][m]={};    //0으로 초기화
    
        lim = n<m?n:m;
        for(int i=0;i<m;i++){
            for (int j=0;j<=(i>(n-1)?(n-1):i);j++){ //(0,0), (0,1), (0,2), (0,3),...,(0,m) 채우기
                arr[j][i-j] = cnt;
                cnt ++;
            }
        }
    
        for (int i=1;i<n;i++){
            for(int j=0;j<(n-i>m?m:n-i);j++){ //(1,m), (2,m), (3,m), (4,m),...,(n,m) 채우기  
                arr[i+j][m-j-1]= cnt;
                cnt ++;
            }
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++)    cout<<arr[i][j]<<' ';
            cout<<endl;
        }
        return 0;
    }

    격자 반대로 채우기

    n x n 크기의 격자에 정수를 채워넣으려고 합니다. 1부터 시작해서 차례대로 $n^2$ 까지 채워넣는데, 다음 그림과 같이 오른쪽 아래에서 부터 위 아래 지그재그 방향으로 채워넣는 프로그램을 작성해보세요.

    입력

    5

    출력

    25 16 15 6 5
    24 17 14 7 4
    23 18 13 8 3
    22 19 12 9 2
    21 20 11 10 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<n;j++){
                if((n-j)%2==0)  arr[i][j] = (n-j-1)*n + i + 1;
                else     arr[i][j] = (n-j)*n - i;
            }
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++)    cout<<arr[i][j]<<' ';
            cout<<endl;
        }
        return 0;
    }

    댓글

Designed by Tistory.