ARCTIC 오답 관련 질문

  • sky714
    sky714

    안녕하세요 ALGOSPOT에 어제 가입했습니다.

    테스트 문제에 도전 중인데 오답이라고 뜨네요..

    아래는 소스 코드이고 소수점 3자리에서 반올림하기 위해 그냥 printf("%.2f\n", output); 이런 방식으로 처리했습니다.

    혹시 몰라서 printf("%.2f", output); 과 같이 줄 바꿈 문자
    없이도 해 보았는데 결과는 역시나 오답이네요...

    처음 도전하다 보니 도대체 어디가 오류인지 감을 못잡겠습니다.

    도움 좀 부탁드립니다. ^^

    #include <stdio.h>
    #include <iostream>
    #include <math.h>
    #include <vector>
    using namespace std;
    
    typedef struct _PointF
    {
        float x, y;
    } PointF;
    
    int main(void)
    {
        vector<float> output;
        int c = 0;
        cin >> c;
        for(int i=0; i<c; i++)
        {
            vector<PointF> posList;
            int baseNum = 0;
            cin >> baseNum;
            for(int j=0; j<baseNum; j++)
            {
                PointF basePoint = { 0, 0 };
                cin >> basePoint.x >> basePoint.y;
                posList.push_back(basePoint);
            }
            float distance = 0;
            for(int j=0; j<baseNum-1; j++)
            {
                float nearestBase = 10000;
                for(int k=j+1; k<baseNum; k++)
                {
                    float temp = 
    sqrtf((posList[j].x-posList[k].x)*(posList[j].x-posList[k].x)+(posList[j].y-posList[k].y)*(posList[j].y-posList[k].y));
                    if(temp < nearestBase)
                    {
                        nearestBase = temp;
                    }
                }
                if(distance < nearestBase)
                {
                    distance = nearestBase;
                }
            }
            output.push_back(distance);
        }
    
        for(int i=0; i<c; i++)
            printf("%.2f\n", output[i]);
    
        return 0;
    }
    

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

    문제를 해결하는 방법이 틀리신 것으로 보입니다. 올려 주신 코드는 각 기지에 대해 가장 가까운 기지와의 거리들 중 최대값을 구하는 코드인데, 예를 들어 네 개의 기지가 있고 (0, 0), (0, 1), (1000, 0), (1000, 1) 네 개의 기지가 있다면 네 개의 기지 모두 가장 가까운 기지와의 거리는 1.0이지만 거리가 1000 떨어진 두 기지 사이를 연결할 방법은 없습니다.


    11년 전 link
  • sky714
    sky714

    아, 가장 중요한 것을 생각하지 못하고 계속 뭐가 잘못됐지 하는 생각만 했네요...
    정말 감사합니다. ^^


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