TRIANGLEPATH 문제 오답 질문 들비니다.

  • blue5323
    blue5323
    #include <stdio.h>
    
    int board[100][100];
    int maxboard[100][100];
    int n;
    
    
    int maxresult(){
        maxboard[0][0]=board[0][0];
    
        for(int i=0; i<n;i++)
            for(int j=0;j<i+1;j++){
    
                if(i==0) maxboard[i][j]=maxboard[i-1][j]+board[i][j];
    
                else if(board[i-1][j]=='\0') maxboard[i][j]=maxboard[i-1][j-1]+board[i][j];
    
                else{
                    int temp1=maxboard[i-1][j-1]+board[i][j];
                    int temp2=maxboard[i-1][j]+board[i][j];
    
                    if(temp1>temp2) maxboard[i][j]= temp1;
                    else maxboard[i][j]=temp2;
                }
    
            }
    
    
    
        /*for(int i=0; i<n;i++){
                for(int j=0;j<i+1;j++)
                    printf("%d  ",maxboard[i][j]);
                printf("\n");
        }
        printf("\n");
        */
    
        int max=0;
        for(int i=0;i<n;i++){
            if(max<maxboard[n-1][i]) max=maxboard[n-1][i];
        }
    
        return max;
    }
    
    
    
    int main(){
    
        int T;
        scanf("%d",&T);
    
    
        while(T--){
    
            scanf("%d",&n);
    
            for(int i=0; i<n;i++)
                for(int j=0;j<i+1;j++)
                    scanf("%d",&board[i][j]);
    
            printf("%d\n",maxresult());
    
        }
    
    
    
    
    }
    

    입력값을 board 배열에 저장 하였구요.
    maxborad 라는 배열에 각 (y,x)에 들어갈 수 있는 최댓값을 저장하였습니다.
    그래서 마지막 줄(n-1)에서 최댓값을 찾아서 출력하는 형식으로 해보았습니다.
    예제 입력에서도 잘 돌아가고 시간상으로도 큰 문제가 없어보이는데 어느 점이 문제인지 지적해 주시면 감사하겠습니다.


    8년 전
2개의 댓글이 있습니다.
  • Toivoa
    Toivoa
    1. for문에서 i=1부터 시작해야 됩니다. maxboard[0][0]이 board[0][0]으로 이미 채워져있기 때문에 i=0일 때에는 값을 계산할 필요가 없습니다.
    2. if (i==0)이 아니라 if (j==0)이 되어야 합니다.

    8년 전 link
  • blue5323
    blue5323

    감사합니다. 덕분에 해결하였습니다. 이런 문제점들 찾을 때 보통 어떤 방식으로 찾는지 궁금합니다. 그냥 코드를 주욱 읽어보면서 오류를 찾는지? 아니면 다른 방법이 있는지 궁금합니다.


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.