행렬처럼 배열을 담아 처리하는 2차원 배열.
[]를 두번 사용하여 첫 번째에는 세로 크기, 두 번째에는 가로 크기를 지정한다. (세로x가로 라는 것을 잊지 말자!)
int numArr[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
printf("%d\n", numArr[0][0]);
printf("%d\n", numArr[2][3]);
결과
1
12
1차원 배열에서처럼 2차원 배열도 안의 값들을 전부 0으로 초기화 할 수 있다.
int numArr[3][4] = {0, };
https://www.acmicpc.net/problem/2775
2차원 배열을 활용한 문제이다.
#include <stdio.h>
int main(void){
int arr[15][15]={0, }, num=0, i,j,count=0,sum=0,floor=0,room=0;
for(i=0; i<15; i++){
for(j=0; j<15; j++){
if(i==0){arr[i][j]+=++count;}
else{
sum+=arr[i-1][j];
arr[i][j]=sum;
}
}
sum=0;
}
scanf("%d",&num);
while(num--){
scanf("%d %d",&floor,&room);
printf("%d\n",arr[floor][room-1]);
}
return 0;
}
문제 조건대로 배열 크기를 15를 넘지 않도록 했고, 나머지는 그냥 그림을 그린다는 생각으로 반복문을 짰다.
0층에는 1명 2명 3명.... 이렇게 값을 넣고,
나머지의 경우는 문제에서 하란대로 구현했다.
마지막에 While(num--)과 scanf 부분은 사실 맨 처음 코드를 짤 때는 전체를 감싸고 있어서 배열에 값을 넣는 부분을 두번 반복했었어야 했는데 생각해보니까 그럴필요가 없어서 그냥 통째로 뒤로 뺐다. 값을 다 저장한 이후에 반복문과 scanf로 입력받은 값만 저기서 빼오면 되니까.