CLOCKSYNC RTE 발생하는 문제 도움요청드립니다.

  • 임정민
    임정민

    코딩초짜 질문 드립니다.
    CLOCKSYNC 문제 아래와 같이 구현하였습니다.

    하지만 제출시 RTE가 발생하고 있어
    배열부분이 잘못되었나 이런 부분을 살펴보았지만
    발견하지 못하여 질문 드립니다.

    어떤상황에 RTE 발현될 수 있는지 도움 부탁드리겠습니다.

    #include <iostream>
    using namespace std;
    
    int minVal = 999999;
    
    int connected[10][5] = { 
        { 0, 1, 2, -1, -1 }, 
        { 3, 7, 9, 11, -1 }, 
        { 4, 10, 14, 15, -1 },
        { 0, 4, 5, 6, 7 },
        { 6, 7, 8, 10, 12 },
        { 0, 2, 14, 15, -1 },
        { 3, 14, 15, -1, -1 },
        { 4, 5, 7, 14, 15 },
        { 1, 2, 3, 4, 5 },
        { 3, 4, 5, 9, 13 }
    };
    
    int clocks[16];
    
    int C;
    
    void pushButton(int btnNum) {
        int i = 0;
        while (connected[btnNum][i] != -1 && i < 5) {
            clocks[connected[btnNum][i]] += 3;
            if (clocks[connected[btnNum][i]] == 15) clocks[connected[btnNum][i]] = 3;
    
            i++;
        }
    }
    
    bool allSet() {
        for (int i = 0; i < 16; i++) {
            if (clocks[i] != 12) {
                return false;
            }
        }
        return true;
    }
    
    
    int isDone(int btnNum) {
        if (btnNum == 10) {
            if (allSet()) return 0;
            else return minVal;
        }
    
        int ret = minVal;
        int thisminVal;
    
        for (int p = 0; p < 4; p++) {
            thisminVal = isDone(btnNum+1);
            ret = (ret < p + thisminVal) ? ret : p + thisminVal;
    
            pushButton(btnNum);
        }
        return ret;
    }
    
    void ImemSet(void * buffer, int c, size_t num) {
        char* temp = (char*)buffer;
        for (int i = 0; i < num; i++) *temp++ = (char)c;
    }
    
    int main() {
        cin >> C;
    
        while (C--) {
            ImemSet(clocks, -1, sizeof(clocks));
            for (int i = 0; i < 16; i++)
                cin >> clocks[i];
    
            int ans = isDone(0);
    
            cout << ((ans == minVal)?-1:ans) << endl;
        }
    
        return 0;
    }
    

    9년 전
1개의 댓글이 있습니다.
  • wookayin
    wookayin

    pushButton 함수에서 i=5 가 되면 어떤일이 발생할까요?


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