C언어/ 2차원 배열과 활용

리얼니트·2021년 9월 11일
0

1학년

목록 보기
20/24
post-thumbnail

행렬처럼 배열을 담아 처리하는 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로 입력받은 값만 저기서 빼오면 되니까.

profile
방구석에서 잘 살아요

0개의 댓글