• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

채점 질문

21.08.03 19:18 작성 조회수 175

0

안녕하세요 선생님. 설명 잘 들었습니다.
선생님의 설명을 듣고,
구현을 하여 채점을 했는데요,
선생님의 코드와 완전히 같지는 않지만,
로직은 동일하게 작성하였습니다.
그결과
input data 1,2,4,5에 대해서는 success가 나왔는데
input data 3에 대해서는 exit code -182485 과 같은식으로 나오길래
input data 3의 값을 copy and paste 하여 직접 실행해 보았고,
그 결과는 output data 3과 일치하였습니다.
이런 경우, 단순히 실행과정에서 오류가 난것으로 생각하면 될까요?
========================================
(참고용 코드)
#include <stdio.h> #include <stdlib.h> #include<algorithm> #include <math.h> int main(){ int height, width; int y , x ; int **arr; int i,j; int max = -1; int tmp; //1_1. 전체 땅의 가로 세로를 입려갇는다 (세로 먼저 입력 후 가로 입력) scanf("%d%d",&height, &width); //1_2. 주의할 점은, 가장자리 부분에 000000..0000을 추가하기 위해, 기존 height * width 사이즈 보다 //1씩 키워 height+1 x width+1의 크기로 다이나믹 테이블을 생성해야 한다 arr = (int**)calloc(height+1, sizeof(int*)); for(i=0; i<width+1; i++) arr[i] = (int*)calloc(width+1, sizeof(int)); //1_3. 이때, 가장자리 부분에는 0으로 초기화 되어있으므로(calloc() 함수에 의해) 그 0을 이용하여, // 일관된 규칙을 기반으로 다이나믹 테이블을 완성시킨다 for(i=1; i<=height; i++){ for(j=1; j<=width; j++){ scanf("%d",&tmp); arr[i][j] = arr[i-1][j] + arr[i][j-1] - arr[i-1][j-1] + tmp; } } //1_4. mask의 size를 입력받는다 scanf("%d%d",&y, &x); //2. 다이나믹 테이블의 특성을 이용하여, 각 mask 안에 포함된 element의 합을 (일정한 규칙의 식을 통해) 구한다 int idx1, idx2; for(i=1; i<=(height+1-y); i++){ for(j=1; j<=(width+1-x); j++){ idx1 = i+y-1; idx2 = j+x-1; tmp = arr[idx1][idx2] - (arr[idx1][idx2-x] + arr[idx1-y][idx2]) + arr[idx1-y][idx2-x]; if(tmp > max) max = tmp; } } //3. 결국 max에는 최댓값이 남아있게 되고, 남게 되는 최댓값을 출력한다 printf("%d\n", max); //clean Up return 0; }

답변 1

답변을 작성해보세요.

0

안녕하세요^^

답이 동일했다면 그런게 아닌가 싶습니다.