SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
project #5



  최단 경로 찾기


             C0조



             김영진
             강성태
             정준용
             허규준
             김지환
순서




      •조원별 업무분담


         •일정 계획


         •문제 파악


       •알고리즘 계획


          •소스구현


•문제점 파악 / 해결법 토의


          •최종소스
1)조원별 업무 분담

김영진           자료 조사 및 알고리즘 구현



강성태           자료 조사 및 알고리즘 구현



정준용           보고서 작성 및 소스 작성



허규준           알고리즘 구현 및 소스 작성



김지환           알고리즘 구현 및 소스 작성




2)일정계획
              과제에 대한 자료 조사 및 업무분담
05.24~05.29
              일정 계획

              프로젝트 알고리즘 구성 및 소스 구
05.29~06.01
              현


06.01~06.07   최종 소스 확인 및 최종보고서 작성
3)문제파악


。노드가 n(V1, V2, ... Vn)개인 그래프 G가 있다. V1에
서 Vn까지의 패스를 P=(p1, p2, ... pm)이라고 할 경우,
P에서 3개의 최단거리를 찾아라.


。다음과 같은 프로그램을 작성한다.
 。다음과 같은 포맷을 가진 파일에서 정보를 읽어 들인다.

  。첫번째 라인은 그래프 노드의 수 n이 있다.

  。두번째 라인부터 끝까지 다음과 같이 3수를 가지고 있다.

  。Vi, Vj, Wij : 여기서 Vi는 간선의 시작 노드, Vj는 간선의 끝

   노드 그리고 그 간선의 가중치를 Wij이다.

 。V1에서 Vn까지의 가장 짧은 패스 3개를 찾아라.

 。3개의 패스를 화면에 표시하고 가중치의 합을 표시한다.

。어떤 자료구조 / 알고리즘을 사용해도 됨.
4)알고리즘 계획


    최단거리를 구해주는 Floyd 알고리즘을 사용해 모든 노드의
가중치 중 가장 작은 가중치를 가진 패스 3개를 찾을 것입니
다.



5)소스 구현

#include<stdio.h>
#define M 9999


int main()
{
      int a[20][20],min=1;
      int i=0,j=0,k,l=0,num,weight=0;
      int start,end,line,cnt=1,stopcnt=0;
      char c,d;


      for(i=0;i<20;i++)
      {
             for(j=0;j<20;j++)
             {
                     a[i][j]=M;
             }
             a[i][i]=0;
      }
printf("노드의 갯수를 입력하십시오n");
scanf("%d",&num);
printf("간선의 갯수를 입력하십시오n");
scanf("%d",&line);
fflush(stdin);
for(i=0;i<line;i++)
{
       scanf("%c %c %d",&c,&d,&weight);
       a[c-65][d-65]=weight;
       a[d-65][c-65]=weight;
       fflush(stdin);
}




for(k=0;k<num;k++)
{
       for(i=0;i<num;i++)
       {
                 for(j=0;j<num;j++)
                 {
                        if(a[i][j]>a[i][k]+a[k][j])
                        {
                                a[i][j]=a[i][k]+a[k][j];


                        }
                 }
       }
}
for(i=0;i<num;i++)
            {
                      for(j=0;j<num;j++)
                      {
                               printf("%d ",a[i][j]);
                      }
                      printf("n");
            }


            for(;;)
            {
                      cnt=1;
                      for(j=0;j<num;j++)
                      {
                               for(i=cnt;i<num;i++)
                               {
                                        if(a[j][i]==min)
                                        {
                                               printf("%c -> %c = %dn", j+65, i+65,
a[j][i]);
                                               stopcnt++;
                                               if(stopcnt==3)
                                               {
                                                        return 0;
                                               }
                                        }
                               }
                               cnt++;
                      }
min++;
     }
}



6)문제점

    프로젝트의 원래 의도는 파일에서 입력받아 그 값 중 가장
짧은 패스 3개를 출력하는 것이지만 파일 입력의 개념을 확
실히 숙지하지 못하여 프로그램의 메인 함수 내에서 입력받
아 출력하였습니다.



코딩결과

Más contenido relacionado

La actualidad más candente

이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5pkok15
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01seonhyung
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수SeungHyun Lee
 
이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6pkok15
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdfkd19h
 
이산치수학 Project5
이산치수학 Project5이산치수학 Project5
이산치수학 Project5KoChungWook
 
자료구조 01 최종 보고서
자료구조 01 최종 보고서자료구조 01 최종 보고서
자료구조 01 최종 보고서pkok15
 
Project#1파스칼 삼각형
Project#1파스칼 삼각형Project#1파스칼 삼각형
Project#1파스칼 삼각형Kimjeongmoo
 
말의여행
말의여행말의여행
말의여행mil23
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 HwpKimjeongmoo
 
2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차Moonki Choi
 
2012 Dm C2 05
2012 Dm C2 052012 Dm C2 05
2012 Dm C2 05seonhyung
 
2012 Ds A1 05
2012 Ds A1 052012 Ds A1 05
2012 Ds A1 05seonhyung
 
튜터링 #10 20120416
튜터링 #10 20120416튜터링 #10 20120416
튜터링 #10 20120416Jong Hyuck Lim
 

La actualidad más candente (19)

이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5이산수학 C1 프로젝트 5
이산수학 C1 프로젝트 5
 
이산수학05
이산수학05이산수학05
이산수학05
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수
 
이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6이산수학 C1 프로젝트 6
이산수학 C1 프로젝트 6
 
이산수학06
이산수학06이산수학06
이산수학06
 
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf
 
이산치수학 Project5
이산치수학 Project5이산치수학 Project5
이산치수학 Project5
 
자료구조 01 최종 보고서
자료구조 01 최종 보고서자료구조 01 최종 보고서
자료구조 01 최종 보고서
 
Project#1파스칼 삼각형
Project#1파스칼 삼각형Project#1파스칼 삼각형
Project#1파스칼 삼각형
 
말의여행
말의여행말의여행
말의여행
 
자료구조02
자료구조02자료구조02
자료구조02
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 Hwp
 
2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차
 
2012 Dm C2 05
2012 Dm C2 052012 Dm C2 05
2012 Dm C2 05
 
이산치4번
이산치4번이산치4번
이산치4번
 
2012 Ds A1 05
2012 Ds A1 052012 Ds A1 05
2012 Ds A1 05
 
튜터링 #10 20120416
튜터링 #10 20120416튜터링 #10 20120416
튜터링 #10 20120416
 
BOJ4743
BOJ4743BOJ4743
BOJ4743
 

Similar a 자료구조05

이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7pkok15
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpKimjeongmoo
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서KimChangHoen
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpKimjeongmoo
 
2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdf2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdfkd19h
 
2012 Ds D0 01
2012 Ds D0 012012 Ds D0 01
2012 Ds D0 01chl132435
 
RNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, ifRNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, ifitlockit
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)NAVER D2
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 
2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdfkd19h
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02chl132435
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
RNC C++ lecture_4 While, For
RNC C++ lecture_4 While, ForRNC C++ lecture_4 While, For
RNC C++ lecture_4 While, Foritlockit
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types웅식 전
 
RNC C++ lecture_5 Array
RNC C++ lecture_5 ArrayRNC C++ lecture_5 Array
RNC C++ lecture_5 Arrayitlockit
 
이산치4보고서
이산치4보고서이산치4보고서
이산치4보고서KimChangHoen
 

Similar a 자료구조05 (20)

이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7
 
3콤비네이션
3콤비네이션3콤비네이션
3콤비네이션
 
이산수학07
이산수학07이산수학07
이산수학07
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 Hwp
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort Hwp
 
2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdf2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdf
 
2012 Ds D0 01
2012 Ds D0 012012 Ds D0 01
2012 Ds D0 01
 
RNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, ifRNC C++ lecture_2 operator, if
RNC C++ lecture_2 operator, if
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
RNC C++ lecture_4 While, For
RNC C++ lecture_4 While, ForRNC C++ lecture_4 While, For
RNC C++ lecture_4 While, For
 
자구2번
자구2번자구2번
자구2번
 
강의자료 2
강의자료 2강의자료 2
강의자료 2
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types
 
RNC C++ lecture_5 Array
RNC C++ lecture_5 ArrayRNC C++ lecture_5 Array
RNC C++ lecture_5 Array
 
이산치4보고서
이산치4보고서이산치4보고서
이산치4보고서
 

Más de herojoon1378

Más de herojoon1378 (8)

자료구조06
자료구조06자료구조06
자료구조06
 
자료구조04
자료구조04자료구조04
자료구조04
 
자료구조02
자료구조02자료구조02
자료구조02
 
자료구조01
자료구조01자료구조01
자료구조01
 
Mst 구하기
Mst 구하기Mst 구하기
Mst 구하기
 
7그룹 코드
7그룹 코드7그룹 코드
7그룹 코드
 
6비트덧셈기
6비트덧셈기6비트덧셈기
6비트덧셈기
 
2데이터베이스 시스템
2데이터베이스 시스템2데이터베이스 시스템
2데이터베이스 시스템
 

자료구조05

  • 1. project #5 최단 경로 찾기 C0조 김영진 강성태 정준용 허규준 김지환
  • 2. 순서 •조원별 업무분담 •일정 계획 •문제 파악 •알고리즘 계획 •소스구현 •문제점 파악 / 해결법 토의 •최종소스
  • 3. 1)조원별 업무 분담 김영진 자료 조사 및 알고리즘 구현 강성태 자료 조사 및 알고리즘 구현 정준용 보고서 작성 및 소스 작성 허규준 알고리즘 구현 및 소스 작성 김지환 알고리즘 구현 및 소스 작성 2)일정계획 과제에 대한 자료 조사 및 업무분담 05.24~05.29 일정 계획 프로젝트 알고리즘 구성 및 소스 구 05.29~06.01 현 06.01~06.07 최종 소스 확인 및 최종보고서 작성
  • 4. 3)문제파악 。노드가 n(V1, V2, ... Vn)개인 그래프 G가 있다. V1에 서 Vn까지의 패스를 P=(p1, p2, ... pm)이라고 할 경우, P에서 3개의 최단거리를 찾아라. 。다음과 같은 프로그램을 작성한다. 。다음과 같은 포맷을 가진 파일에서 정보를 읽어 들인다. 。첫번째 라인은 그래프 노드의 수 n이 있다. 。두번째 라인부터 끝까지 다음과 같이 3수를 가지고 있다. 。Vi, Vj, Wij : 여기서 Vi는 간선의 시작 노드, Vj는 간선의 끝 노드 그리고 그 간선의 가중치를 Wij이다. 。V1에서 Vn까지의 가장 짧은 패스 3개를 찾아라. 。3개의 패스를 화면에 표시하고 가중치의 합을 표시한다. 。어떤 자료구조 / 알고리즘을 사용해도 됨.
  • 5. 4)알고리즘 계획 최단거리를 구해주는 Floyd 알고리즘을 사용해 모든 노드의 가중치 중 가장 작은 가중치를 가진 패스 3개를 찾을 것입니 다. 5)소스 구현 #include<stdio.h> #define M 9999 int main() { int a[20][20],min=1; int i=0,j=0,k,l=0,num,weight=0; int start,end,line,cnt=1,stopcnt=0; char c,d; for(i=0;i<20;i++) { for(j=0;j<20;j++) { a[i][j]=M; } a[i][i]=0; }
  • 6. printf("노드의 갯수를 입력하십시오n"); scanf("%d",&num); printf("간선의 갯수를 입력하십시오n"); scanf("%d",&line); fflush(stdin); for(i=0;i<line;i++) { scanf("%c %c %d",&c,&d,&weight); a[c-65][d-65]=weight; a[d-65][c-65]=weight; fflush(stdin); } for(k=0;k<num;k++) { for(i=0;i<num;i++) { for(j=0;j<num;j++) { if(a[i][j]>a[i][k]+a[k][j]) { a[i][j]=a[i][k]+a[k][j]; } } } }
  • 7. for(i=0;i<num;i++) { for(j=0;j<num;j++) { printf("%d ",a[i][j]); } printf("n"); } for(;;) { cnt=1; for(j=0;j<num;j++) { for(i=cnt;i<num;i++) { if(a[j][i]==min) { printf("%c -> %c = %dn", j+65, i+65, a[j][i]); stopcnt++; if(stopcnt==3) { return 0; } } } cnt++; }
  • 8. min++; } } 6)문제점 프로젝트의 원래 의도는 파일에서 입력받아 그 값 중 가장 짧은 패스 3개를 출력하는 것이지만 파일 입력의 개념을 확 실히 숙지하지 못하여 프로그램의 메인 함수 내에서 입력받 아 출력하였습니다. 코딩결과