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

  • User Avatar
    ruokjh

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

    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--;
    }
    

    }
    ~~~


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

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


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