-
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; }
'데일리 codeup > 이차원 배열' 카테고리의 다른 글
순서대로 채우기, 격자로서의 2차원 배열_220713 (0) 2022.07.13 새로운 2차원 배열의 선언_220713 (0) 2022.07.13 배열의 합_220713 (0) 2022.07.13