메뉴 건너뛰기

BLENDING

자유 게시판

[알고리즘 문제] 풀어보세요~

01오치문2014.12.27 15:18조회 수 4253댓글 5

    • 글자 크기

01' 기장, 02년 회장, 지금은 그냥 마이너스 존입니다.

    • 글자 크기
내일 군대가네요 하하...... (by 13전성혁) 회장님 보세요 (by 03김남균)

댓글 달기

댓글 5
  • 점을 입력 받는 것까지.... 다음 점들을 이용해서 정사각형을 그려야 할텐데 


    어떻게 해야 할까요.. 고민중

  • 01오치문글쓴이
    2015.1.4 15:11 댓글추천 0비추천 0

    중복된 점은 입력되지 않는다고 하니 신뢰해도 됩니다. (= 중복체크 안해도 되요)


    정사각형의 정의/조건을 잘 정리해보면 실마리가 보일 것같네요. :)

  • #include <iostream>
    #include <math.h>
    using namespace std;

    class Vector//점을 저장할 클래스
    {
    private:
    int x;
    int y;
    public:
    Vector(){x = 0; y = 0;}
    int getx(){return x;}
    int gety(){return y;}
    void setxy(int x,int y);
    };
    void Vector::setxy(int x ,int y)//점을 받아 저장
    {
    this->x = x;
    this->y = y;
    }

    double len(Vector v,Vector v2)//선분의 길이를 구함
    {
    double length;
    length = sqrt(pow((double)v.getx() - (double)v2.getx(),2)+pow((double)v.gety() - (double)v2.gety(),2));
    return length; 
    }

    int main()
    {
    int num = 0,num2 = 0;

    cout<<"테스트할 횟수를 입력 : ";
    cin >> num;

    int p = 0,p2 = 0;
    int max = 0;
    int min = 0;
    int count = 0;
    Vector *v;
    for(int n = 0; n<num;n++)//테스트할 횟수 만큼 반복
    {
    cout<<"점의 개수 : ";
    cin >> num2;
    v = new Vector[num2];
    for(int n2 = 0; n2<num2;n2++)//점의 개수만큼 반복
    {
    cin>> p;
    cin>>p2;
    v[n2].setxy(p,p2);
    }

    for(int i = 0; i < num2;i++)//점들을 순회
    for(int j = i+1; j<num2;j++)
    for(int k = j+1;k<num2;k++)
    for(int l = k+1;l<num2;l++)
    {
    double l0 = 0;//최초 기준,결과값 저장
    double l1 = len(v[i],v[j]);//AB
    double l2 = len(v[i],v[k]);//AC
    double l3 = len(v[i],v[l]);//AD

    if( l1 == l2 && l3 == len(v[j],v[k]))//AB,AC의 길이가 같고 남은 AD(대각선) 남은 BC(대각선)와 길이가 같다면 정사각형  
    l0 = l1; //변의 길이 저장
    else if( l1 == l3 && l2 == len(v[j],v[l]))
    l0 = l1;
    else if( l2 == l3 && l1 == len(v[k],v[l]))
    l0 = l2;
    if(count == 0)
    {
    max = (int)l0;
    min = (int)l0;
    count++;
    }
    else if(l0 > 0 && l0 > max) // 저장한 변의 길이가 max값보다 크면,min값보다 작으면 저장
    max = (int)l0;
    else if(l0 > 0 && l0 < min)
    min = (int)l0;
    }
    cout << "max = "<<max<<" min = "<<min<<endl;

    }
    delete[] v;
    return 0;
    }
  • 하다말고 부산 놀러 다녀 왔더니 너무 늦은 느낌이


    마침 올해 고3 되는 동생느님이 계셔서 도형에 관한 많은 도움을 받았습니다.


    역시 수학은 고3 현역들이 최고!


  • 09박규호님께
    01오치문글쓴이
    2015.1.10 18:07 댓글추천 0비추천 0

    ^^b


    꼼꼼하게 검사를 했군요. 검사 조건은 좀 줄여볼 수도 있을것같습니다.

    이왕이면 링크걸린 사이트에 들어가 답안 제출해볼 것을 권합니다. 

    그렇게 하려면, 물론 출력 형식은 바뀌어야겠죠. (문제의 요구사항대로)


번호 제목 글쓴이 날짜 조회 수
공지 [난해한코딩대회] 예시4 16황지우 2020.08.31 356
공지 회장님 훈화말씀16 16황지우 2020.03.16 8487
공지 스맛폰으로 BLENDING홈피 새글 알림 받기1 BLENDING 2011.06.25 195300
3362 내일 군대가네요 하하......3 13전성혁 2015.01.19 4011
[알고리즘 문제] 풀어보세요~5 01오치문 2014.12.27 4253
3360 회장님 보세요 03김남균 2014.11.21 4382
3359 개미수열11 01오치문 2014.10.31 5718
3358 엔진 라이브러리 토론 99곽용우 2014.10.28 4691
3357 재영아 화이팅!4 09이혜성 2014.10.06 4812
3356 예전 팩맨게임 보기 싫어서 다시올려요.10 11이은정 2014.09.23 5021
3355 유니티 공부 하는것 같아서4 07최윤수 2014.09.16 4982
3354 홈페이지가 죽었구나..4 10박태수 2014.09.01 5124
3353 8월18일날 군대갑니다 ㅠ4 13황정우 2014.08.09 5212
3352 잊고 있던 것 수정! 08정호열 2014.06.11 4945
3351 iconshop??6 14최중원 2014.04.17 5435
3350 03학번 오태원선배가 결혼하네요5 08이혜린 2014.04.01 5875
3349 간만에 퀴즈 하나18 01오치문 2014.02.11 7135
3348 2014년 새해 복 많이 받으세요4 07최윤수 2014.01.01 5163
3347 2013년 12월 4일 히터 구매 했습니다.1 13전성혁 2013.12.04 5264
3346 홈페이지 새벽 4시쯤에 약간 느려질 수도 있습니다.1 08정호열 2013.11.21 7215
3345 2013년 엔씨소프트 하반기 신입사원 공개채용이 시작되었습니다.!!! 03김상헌 2013.10.10 8772
3344 다들 아는지는 모르겠지만..4 97김민경 2013.09.11 8851
3343 굽신굽신 블렌딩 흥신소..4 00한우람 2013.07.09 11816
이전 1 ... 17 18 19 20 21 22 23 24 25 26... 190다음
첨부 (0)
위로