어떻게 해서 이게 오답인지 모르겠네요.

  • Nes
    Nes

    G++이나 VS를 통해 실행하여봐도 전부 원하는 값이 나오는데 오답이더군요.
    제가 문제의 조건이나 출력방법을 잘못이해하고 있는건가요?

    DRAWRECT

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int findX(int inputX_1, int inputX_2, int inputX_3, int inputY_1, int inputY_2, int inputY_3) {
        if(inputX_1 == inputX_2) 
            return inputX_3;
        else {
            if(inputY_1 == inputY_2) {
                if(inputX_1 == inputX_3)
                    return inputX_2;
                else
                    return inputX_1;
            }
            else
                return inputX_1;
    
        }
    }
    
    int findY(int inputX_1, int inputX_2, int inputX_3, int inputY_1, int inputY_2, int inputY_3) {
        if(inputX_1 == inputX_2) {
            if(inputY_1 == inputY_3)
                return inputY_2;
            else
                return inputY_1;
        }
        else {
            if(inputY_1 == inputY_3) 
                return inputY_2;
            else
                return inputY_3;
        }
    }
    
    void makeOutput() {
    
        int testNum;
        int tempX = 0;
        int tempY = 0;
        vector<int> resultX, resultY, ordinateX, ordinateY;    
        int forCount = 0;
        cin >> testNum ;
    
        for(forCount = 0 ; forCount < testNum*3 ; forCount++) {
            int printCount = 0;
            cin >> tempX >> tempY ;
            if(tempX < 1 || tempY < 1 || tempX > 1000 || tempY > 1000)
                break;
            ordinateX.push_back(tempX);
            ordinateY.push_back(tempY);
    
            if(forCount%3 == 2) {
                resultX.push_back(findX(ordinateX[forCount-2], ordinateX[forCount-1], ordinateX[forCount], ordinateY[forCount-2], ordinateY[forCount-1], ordinateY[forCount]));
                resultY.push_back(findY(ordinateX[forCount-2], ordinateX[forCount-1], ordinateX[forCount], ordinateY[forCount-2], ordinateY[forCount-1], ordinateY[forCount]));
            }
        }
    
        for (int forCount = 0 ; forCount < testNum ; forCount++) {
            cout << resultX[forCount] << " " <<  resultY[forCount] << endl;
        }
    }
    
    
    int main() {
        makeOutput();
        return 0;
    }
    

    11년 전
3개의 댓글이 있습니다.
  • Being
    Being

    findX()가 문제가 있을 것 같습니다. 예를 들어, 1번 점과 2번 점이 서로 대각선에 위치해 있다고 하면 언제나 1번 점의 x 좌표를 되돌리겠지만 그렇지 않은 경우가 있을 수 있겠네요.


    11년 전 link
  • Being
    Being

    조금 더 생각해 보시면 findX와 findY의 코드 모양새가 (물론 꼭 그럴 필요는 없지만) 대칭적인 것이 자연스럽겠지요.


    11년 전 link
  • Nes
    Nes

    하 검산의 부족이네요 감사합니다.


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