강의로 돌아가기
taeyoon Kim

19번만 틀리네요. 도와주세요. signal: aborted(core dumped) (C++)

19번만 틀리신분은 없어서 왜 틀렸는지도 모르겠습니다.ㅜ.ㅜ

문제에서 주어진 jobs가 2차원벡터인데 sort하는 법을 모르겠어서

pair를 사용한 job을 새로 만든 후 오름차순 정렬하였습니다.

..

그 후엔 라면공장문제랑 완전 똑같은 방식으로 짰고

answer에 모든 시간을 더한 후 마지막에 jobs.size()로 나눴습니다.

왜 19번만 틀리는걸까요....?

다른건 다 맞는거 보니 맞게 푼거 같은데 틀리는 이유를 모르겠습니다.

혹시 signal: aborted(core dumped) 의 의미라도 아는 분 있으시면 도와주세용

작성중인 코드―solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

bool compares(pair<int, int> a, pair<int, int> b) {
    if (a.first < b.first)
        return true;

    if (a.first == b.first) {
        if (a.second < b.second)
            return true;
    }

    return false;
}

int solution(vector<vector<int>> jobs) {
    int answer = 0;
    //{ {0,3},{1,9},{2,6} });  정답:9

    vector< pair<int, int> > job;

    for (int i = 0; i < jobs.size(); i++) {
        job.push_back(make_pair(jobs[i][0], jobs[i][1]));
    }

    sort(job.begin(), job.end(), compares);

    for (int i = jobs.size() - 1; i >= 0; i--) {

        jobs[i][0] = job.back().first;
        jobs[i][1] = job.back().second;
        job.pop_back();
    }

/*******************_여기까지 sort_**********************/

    int i, index, index2;
    index = 0;
    int done = 0;

    priority_queue<int, vector<int>, greater<int>> pq;

    answer += jobs[0][0] * jobs.size();
    index2 = jobs[0][0];

    while (done < jobs.size()) {
        for (i = index; i < jobs.size()&& jobs[i][0] <= index2; i++) {
            pq.push(jobs[i][1]);
            index++;
        }
        answer += (pq.top() * (jobs.size() - done));
        index2 += pq.top();
        pq.pop();
        answer -= jobs[done][0];
        done++;
    }

    answer /= jobs.size();

    return answer;
}
1 개의 답변
정상원

혹시 해결하셨나요?

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.