2022.12.31 Baekjoon2738

조진호·2022년 12월 31일
0

코드 #1

#include<stdio.h>

int main(void) {
    int x, y;
    scanf("%d %d", &x, &y);
    int array1[x][y] = {0, };
    int array2[x][y] = {0, };
    int sum[x][y] = {0, };

    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            scanf("%d", &array1[i][j]);
        }
    }
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            scanf("%d", &array2[i][j]);
        }
    }
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            sum[i][j] = array1[i][j] + array2[i][j];
            printf("%d ", sum[i][j]);
        }
        printf("\n");
    }
} 

코드 #2

#include<stdio.h>

int main(void) {
    int x, y;
    scanf("%d %d", &x, &y);
    int array1[100][100] = {0, };
    int array2[100][100] = {0, };
    int sum[100][100] = {0, };

    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            scanf("%d", &array1[i][j]);
        }
    }
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            scanf("%d", &array2[i][j]);
        }
    }
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            sum[i][j] = array1[i][j] + array2[i][j];
            printf("%d ", sum[i][j]);
        }
        printf("\n");
    }
} 

틀린이유
2차원 배열의 초기화 때문에 틀린것 같은데 x와 y변수의 값을 입력 받은 후에 그 값을 이용하여 2차원 배열을 초기화 시키는 것이 안되는거 같다. 왜 안되는지는 더 공부해야할거 같다.

답변
백준에 질문을 했더니 다음과 같은 친절한 답변이 왔다.
"2차원 배열의 크기는 컴파일 단계에서 정해지고 scanf는 런타임 단계에 입력이 되어서 x, y에 값이 들어가기 때문에 현재 코드에서는 x, y의 초기값이 세팅되어 있지 않아서 오류가 뜨는 겁니당"

study
고로 위 문제를 정확히 알기 위해선 컴파일 단계와 런타임 단계에 대한 개념을 숙지할 필요가 있다.

컴파일타임(Compile Time): 개발자에 의해 C, JAVA 등과 같은 개발 언어로 소스코드가 작성되며, 컴파일 과정을 통해 컴퓨터가 인식할 수 있는 기계어 코드로 변환되어 실행 가능한 프로그램이 되는 과정을 의미한다.
런타임(Run Time): 컴파일 과정을 마친 응용프로그램이 사용자에 의해서 실행되어 지는 '때(time)'를 의미한다.
위 개념은 https://dd-corp.tistory.com/9 블로그 내용을 인용한 것이다.

개념의 보다 심화 과정을 공부하기는 아직 일러 지금은 그냥 컴파일타임 다음이 런타임이고 변수 선언은 컴파일 단계, 입력은 런타임 단계라 해석을 해야겠다.

profile
코린이

0개의 댓글

관련 채용 정보