강의로 돌아가기
sy

실패 (signal: segmentation fault (core dumped))

테스트 6~10, 16~20번과
시간 효율성 테스트 1~4번에서
실패 (signal: segmentation fault (core dumped)) 에러 메시지가 뜹니다.
나머지 테스트들은 0.01~0.04ms에 통과했구요... 어떤 부분에서 오류가 발생하는 걸까요?
며칠 내내 고민해서 풀었는데 힘 빠지네요 ㅜㅜ
아래 코드는 의심되는 부분입니다.

작성중인 코드―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
// 2019.02.20~22 sy
// 프로그래머스 Lv4 그래프 - 사이클 제거

    vector<string> vertex(n, "");       // 각 노드에 연결된 노드
    string cycles = "";                 // 모든 사이클
    /* 2단계 :: 사이클 조사 */
    for (int i = 0; i < n; ++i) {
        vector<string> visited(n, "");
        string q = "";
        if (q == "")
            q += i + '0';
        while (q != "") {
            int current = q[q.size() - 1] - '0';
            for (int j = 0; j < vertex[current].size(); ++j) {
                if (visited[current].find(vertex[current][j]) == -1) {
                    if (q.find(vertex[current][j]) != -1) {
                        if (vertex[current][j] - '0' == i) {
                            string tmp = q;
                            sort(tmp.begin(), tmp.end());
                            if (cycles.find(" " + tmp + " ") == -1) {
                                cycles += " " + tmp + " ";
                                visited[current] += vertex[current][j];
                                visited[vertex[current][j] - '0'] += current + '0';
                            }
                        }
                    }
                    else {
                        q += vertex[current][j];
                        visited[current] += vertex[current][j];
                        visited[vertex[current][j] - '0'] += current + '0';
                        break;
                    }
                }
                if (j == vertex[current].size() - 1) {
                    q.erase(q.size() - 1);
                    if (q.find(current + '0') == -1)
                        visited[current] = "";
                }
            }
        }
    }
1 개의 답변
sy

만든 테스트 그래프는 문제 없이 통과했습니다.
n = 4; edges = { { 1, 2 }, { 1, 3 }, { 2, 3 }, { 2, 4 }, { 3, 4 } }; //2+3
n = 8; edges = { { 1, 2 }, { 2, 3 }, { 3, 4 }, { 4, 5 }, { 5, 6 }, { 6, 7 }, { 7, 8 }, { 8, 1 }, { 2, 7 }, { 3, 6 } }; //0
n = 5; edges = { { 1, 2 }, { 3, 2 }, { 4, 3 }, { 5, 2 }, { 1, 5 }, { 5, 4 } }; //2+5
n = 3; edges = { { 2, 1 }, { 3, 2 }, { 1, 3 } }; //1+2+3
n = 4; edges = { { 1, 2 }, { 3, 2 }, { 2, 4 }, { 4, 3 } }; //2+3+4
n = 5; edges = { { 2, 1 }, { 3, 2 }, { 2, 4 }, { 2, 5 }, { 5, 4 } }; //2+4+5
n = 5; edges = { { 1, 2 }, { 1, 3 }, { 4, 2 }, { 1, 4 }, { 5, 3 }, { 1, 5 } }; //1
n = 6; edges = { { 1, 2, }, { 2, 6 }, { 6, 3 }, { 2, 3 }, { 3, 4 }, { 5, 4 }, { 5, 6 }, { 1, 6 } }; //6
n = 6; edges = { { 2, 3 }, { 2, 6 }, { 6, 1 }, { 5, 6 }, { 3, 5 }, { 4, 3 }, { 4, 5 }, { 2, 1 } }; //0

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