콘서트 문제 문의드립니다. gloryof11 안녕하세요! 콘서트 문제 오답 원인을 찾지 못하고 있서 답답한 마음에 문의를 드립니다; 아래 코드에서 어떤 부분이 문제가 될 수 있는지 조언 부탁드립니다. 감사합니다. CONCERT #include <stdio.h> int TC; int N, VS, VM; int vol[50]; int map[51][1001]; int answer; int main(void) { // init for(int j=0;j<=50;j++) for(int k=0;k<=1000;k++) map[j][k] = -1; scanf("%d",&TC); for(int i=0;i<TC;i++) { scanf("%d %d %d",&N, &VS, &VM); for(int j=0;j<N;j++) scanf("%d", &vol[j]); map[0][VS] = VS; for(int j=0;j<N;j++) { for(int k=0;k<=VM;k++) { if(map[j][k] != -1) { if(k-vol[j] >= 0) map[j+1][k-vol[j]] = map[j][k]; if(k+vol[j] <= VM) { if(k+vol[j] < map[j][k]) map[j+1][vol[j]+k] = map[j][k]; else map[j+1][vol[j]+k] = k+vol[j]; } } } } answer = -1; for(int j=VM;j>=0;j--) { if(map[N][j] != -1 && map[N][j] == j) { if(map[N-1][j-vol[N-1]] == map[N][j]) continue; // 추가한 조건문 answer = j; break; } } printf("%d\n",answer); // init for(int j=0;j<N;j++) vol[j] = 0; for(int j=0;j<=N;j++) for(int k=0;k<=VM;k++) map[j][k] = -1; } return 0; } 9년 전
6개의 댓글이 있습니다. astein 초기화를 한 번만 하는것이 문제가 될 수도 있다는 생각을 해 봅니다... :) 9년 전 link gloryof11 결과를 출력하고 사용한 배열만 다시 초기화를 하고 있습니다; (참고로, 샘플 예제는 맞는데 답안 제출시 오답이 나오고 있습니다..) 9년 전 link astein 아... 그렇네요... 아래쪽까지 다 읽어보질 않았네요... :$ 아래의 예제를 한번 테스트 해 보세요. 1 1 10 10 1 9년 전 link gloryof11 힌트를 참고하여 조건문을 추가했는데 아직도 오답이 뜨고 있습니다..... 혹시 추가로 문제점 보이시면 도움 부탁드립니다.. (감사합니다ㅠ.ㅠ) 9년 전 link astein 위에 써 놓은 예제의 답은 9입니다... 확인 부탁드려요 ㅎㅎ 테이블을 보니 문제를 잘못 이해하신게 아닌가 라는 생각도 드네요 :) 9년 전 link gloryof11 astein 님 감사합니다! 덕분에 문제를 해결하였습니다!! (문제 이해도 잘못했었고, 구현한 조건식에도 문제가 있었습니다;;) 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
gloryof11
안녕하세요!
콘서트 문제 오답 원인을 찾지 못하고 있서 답답한 마음에 문의를 드립니다;
아래 코드에서 어떤 부분이 문제가 될 수 있는지 조언 부탁드립니다.
감사합니다.
CONCERT
9년 전