데일리 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;
}