RedPlus 개인 블로그

시삽: 레드플러스 님 
게시판 이동:
 제목 : 정보처리기사 실기 2008/04/20 기출문제 알고리즘
글번호: 154
작성자: Administrator ( 레드플러스 / redplus@live.com )
작성일: 2010/05/12 오후 7:31:00 (2010/05/12 오후 7:31:00 수정)
조회수: 3567

1. 알고리즘(30점)

 

<문제>

제시된 [그림]은 최소비용 그래프 G의 각 정점에 연결된 N-1개의 간선들의 가중치를 모두 합하여 정점1에서 N까지 이동에 소요되는 총 가중치의 합을 출력하는 순서도이다. <그림>의 괄호 안 내용에 가장 적합한 항목을 <답항 보기>에서 선택하여 해당 번호 (1)~(5)에 마크하시오.

정점 1에서 N까지 이동하는 가중치 그래프 G가 있다.

정점 1에서 N까지 이동하는 가중치 그래프 G의 모든 간선의 개수는 X이며, 모든 간선에는 가중치가 주어져 있다. 각 간선들이 가중치를 정점과 정점 사이의 이동에 필요한 소요비용이라고 할 때. N개의 정점들에 연결된 총 K개의 간선의 가중치 Selection Sort를 이용하여 오름차순 정렬하고 정렬되어 있는 순서대로 가장 가중치가 작은 간선부터 사이클 없이 N-1개를 삽입하여 연결하면 최소비용 그래프 G를 완성할 수 있다.

 

<처리조건>

1. 그림의 순서도에 제시되어있는 미완성 알고리즘을 분석하여, 가장 적합한 로직으로 연계되어 구현될 수 있도록 답안 설계 시 유의하시오.

2. 정점의 개수는 N이고, 간선의 총 개수는 X이다.(단, N>5, X>7)

3. 배열 "Cost(X)"는 X개의 각 간선들의 가중치 값이 저장된다고 가정한다. (단, 가중치 값 중 동일 값은 없다고 가정한다.)

4. 배열 "Cycle(X)"은 X개의 각 간선들 삽입에 따른 그래프의 사이클 여부를 체크한 값이 저장되어 있는 배열로서 간선 삽입 시 사이클이 형성될 경우는 1, 형성되지 않을 경우는 0의 값이 자동적으로 저장되어 있다고 가정한다.

 

<순서도>

image

 

<답항보기>

1

K=X-1

2

K=i+j

3

i+1

4

Cost(j)=Cost(i)

5

L=TEMP+K

6

COT(i)

7

X=X+1

8

Min_Tot=K+L

9

K=L-1

10

i+X

11

Cost(K)=Cost(j)

12

Cost(N)

13

K+1

14

L=Cost(i)+Cost(j)

15

L=L+1

16

Cost(i)=Cost(j)

17

Cost(N)

18

K+1

19

L=Cost(i)+Cost(j)

20

Cost(K+L)

21

L=K+1

22

X

23

L=i+j

24

Cost(i)=Cost(j)

25

Cost(X)

26

N

27

Cycle(K)=i+j

28

Min_Tot=i+j

29

K=Cost(i)+Cost(j)

30

K=K+1

31

Cost(i)=Cost(K)

32

K=N+X

33

COSR(i+j)

34

Cost(j)

35

TEMP+1

36

i+N

37

Cycle(X)

38

Cost(K)

39

i+2

40

X+1

 

<정답>

1. i + 1

2. Cost(i) = Cost(j)

3. Cost(K)

4. L = L + 1

5. K = K + 1

 

<순서도 정답>

image

 

<설명>

(1) 아래 그래프를 C#언어로 표현하고자 한다. 7개의 노드가 있고, 11개의 간선이 있고, 각각의 간선에는 가중치가 구성되어져 있다.

이 그래프를 Cost 배열과 Cycle 배열로 표현해 놓은 자료가 아래에 제시하는 C# 코드의 16, 17번 라인이다.

 

image

 

(2) 직관적으로 표현해서 가중치가 작은것을 기준으로 최적 경로를 구해보면, 아래 빨간색 테두리를 갖는 간선이 최적경로이다. 빨간색 간선을 모두 더해보면, 29의 값을 갖는다.

image

 

(3) 위 그래프를 C# 코드로 옮겨 본 자료는 아래와 같다.

image

위 코드의 22번 라인은 전형적인 Selection Sort의 기본 코드이다. 이는 정보처리 실기 시험에 자주 출제되는 핵심 구문이기도 하다.

 

(4) 실행 결과이다.

image

 

끝.

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 Visual Studio 2010 Wallpaper 제공 사이트 - Administrator 2010-05-14 3558
현재글 정보처리기사 실기 2008/04/20 기출문제 알고리즘 - Administrator 2010-05-12 3567
다음글 IIS7.5에서 파일업로드 및 다운로드 용량 제한 설정(AspMaxRequestEnt... - Administrator 2010-05-12 4200
관련 페이지 리스트
numtitlenamedateview
388 C 언어에서 값 전달과 참조 전달(Call By Value and Call By Re... Administrator 2023-03-09 3573
387 병합 알고리즘 순서도 2022-10-22 5119
386 C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기 Administrator 2022-01-09 4413
385 C 언어: scanf 사용해서 표준 입력인 콘솔로부터 나이를 정수로 입력 받아 출력 Administrator 2022-01-07 3225
384 Java 코드 샘플 - Function 인터페이스로 람다 식 만들기 Administrator 2022-01-04 3123
383 C# 코드 샘플 - 널 조건부 연산자 사용하기 Administrator 2022-01-02 3159
382 C# 코드 샘플 - 널 병합 연산자와 default 키워드 Administrator 2022-01-02 3072
381 C# 코드 샘플 - 널 병합 연산자로 문자열 변수의 NULL 값 확인하기 Administrator 2022-01-02 2985
380 C# 강의 - 14세 미만 체크 메서드 구현 Administrator 2022-01-01 3038
379 C 언어 천 단위 콤마 찍기 thousands_separator.c Administrator 2021-12-30 4172
378 for 문 순서도 - for 문(for loop) 순서도(flowchart) Administrator 2021-12-28 6886
377 C 언어 코드 샘플 - 전처리기 - 조건부 컴파일 Administrator 2021-12-27 3063
376 C 언어 코드 샘플 - 전처리기 - 매크로 함수 Administrator 2021-12-27 3033
375 http-server 설치하기 - 로컬 루프백 주소로 웹페이지 실행 2021-12-27 3034
374 C 언어 코드 샘플 - N명의 학생의 점수를 입력받아 1차원 배열에 저장 후 총점 구... Administrator 2021-12-27 3089
373 Java 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2964
372 C 언어 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 3008
371 C# 교과서 강좌 - LINQ - Select 확장 메서드에 익명 형식 사용하기 Administrator 2021-12-26 3127
370 C# 교과서 강의 - LINQ - Select 확장 메서드를 사용하여 새로운 형태로 ... Administrator 2021-12-26 3039
369 C 언어 코드 샘플 - static-shared - 정적(공유) 변수 사용하기 Administrator 2021-12-26 3058
 
 
 
손님 사용자 Anonymous (손님)
로그인 Home