TRIANGLEPATH 문제 오답 질문 들비니다. 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)에서 최댓값을 찾아서 출력하는 형식으로 해보았습니다. 예제 입력에서도 잘 돌아가고 시간상으로도 큰 문제가 없어보이는데 어느 점이 문제인지 지적해 주시면 감사하겠습니다. 9년 전
2개의 댓글이 있습니다. Toivoa for문에서 i=1부터 시작해야 됩니다. maxboard[0][0]이 board[0][0]으로 이미 채워져있기 때문에 i=0일 때에는 값을 계산할 필요가 없습니다. if (i==0)이 아니라 if (j==0)이 되어야 합니다. 9년 전 link blue5323 감사합니다. 덕분에 해결하였습니다. 이런 문제점들 찾을 때 보통 어떤 방식으로 찾는지 궁금합니다. 그냥 코드를 주욱 읽어보면서 오류를 찾는지? 아니면 다른 방법이 있는지 궁금합니다. 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
blue5323
입력값을 board 배열에 저장 하였구요.
maxborad 라는 배열에 각 (y,x)에 들어갈 수 있는 최댓값을 저장하였습니다.
그래서 마지막 줄(n-1)에서 최댓값을 찾아서 출력하는 형식으로 해보았습니다.
예제 입력에서도 잘 돌아가고 시간상으로도 큰 문제가 없어보이는데 어느 점이 문제인지 지적해 주시면 감사하겠습니다.
9년 전