LUNCHBOX 문제 오답 질문 드립니다.ㅠㅠ

  • ruokjh
    ruokjh

    그리드 풀이법으로 풀었구요 책의 코드를 참조해서 만들었습니다.
    정렬은 라이브러리 안쓰고 직접 구현해서 했구요
    문제에 주어진 테스트케이스랑 제가 생각했던 몇몇 테스트케이스 다 돌렸을땐 올바르게 나오는데
    제출하면 오답이 되네요
    어디가 문제인지 잘 모르겠어요 도와주세요ㅠㅠ
    코드는 다음과 같습니다.

    #include <stdio.h>
    
    int testcase = 0;
    int n = 0; //도시락 개수
    
    struct lunchbox {
        int heattime; //도시락 데우는데 걸리는 시간
        int eattime; //도시락 먹는데 걸리는 시간
    }infolunch[10001];
    
    int max(int a, int b) {
        if (a > b) return a;
        else return b;
    }
    
    int solve() {
        int ret = 0, begineat = 0;
        for (int i = 0; i < n; i++) {
            begineat += infolunch[i].heattime;
            //(이전 도시락을 데우시간 + 먹는 시간)과 (이전 도시락 + 현재 도시락 데운시간 + 먹는 시간)을 비교, 큰 값을 남김
            //왜냐하면 도시락 먹는 시간이 극단적으로 큰 경우 처음 데운 도시락을 다 먹기전에 나중 도시락을 데우고 다 먹을 수 있으므로
            ret = max(ret, begineat + infolunch[i].eattime); 
        }
        return ret;
    }
    
    int main() {
        //입력
        scanf("%d", &testcase);
        while (testcase) {
            scanf("%d", &n);
            for (int i = 0; i < n; i++)
                scanf("%d", &infolunch[i].heattime);
            for (int j = 0; j < n; j++)
                scanf("%d", &infolunch[j].eattime);
    
            //풀이
            for (int i = 0; i < n; i++) { //도시락 먹는 시간이 긴 순으로 정렬
                int max = infolunch[i].eattime;
                int maxindex = i;
                for (int j = i+1; j < n; j++) {
                    if (max < infolunch[j].eattime){
                        max = infolunch[j].eattime;
                        maxindex = j;
                    }
                    if (j == n-1){ //swap
                        infolunch[10001] = infolunch[i];
                        infolunch[i] = infolunch[maxindex];
                        infolunch[maxindex] = infolunch[10001];
                    }
                }
            }
            printf("%d\n", solve());
            testcase--;
        }
    }
    

    8년 전
1개의 댓글이 있습니다.
  • free-lunch
    free-lunch

    C로 제출하니 통과하네요~


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