RedPlus 개인 블로그

시삽: 레드플러스 님 
게시판 이동:
 제목 : C#으로 풀어보는 정보처리기사 실기 2008/11/02 기출문제 알고리즘
글번호: 156
작성자: Administrator ( 레드플러스 / redplus@live.com )
작성일: 2010/05/14 오후 9:49:00 (2010/05/14 오후 9:49:00 수정)
조회수: 3586

1. 알고리즘(30점)

 

<문제>

제시된 <그림>은 인접 비교방식을 통한 정렬 알고리즘의 일종이다. 즉 버블 정렬 기법을 응용하여 한번은 왼쪽에서 오른쪽으로 진행 하면서 최대 값을 우측으로 보내고, 한번은 오른쪽에서 왼쪽으로 진행하면서 최소 값을 좌측으로 보내는 방법을 반복하면서 정렬하는 기법이다. 이 알고리즘을 이용하여 크기가 4인 배열에 저장되어 있는 4개의 정수를 오름차순으로 정렬하고자 한다.

<그림>의 괄호 안 내용 (1)~(5)에 가장 적합한 항목을 <답항보기>에서 선택하여 답안지의 해당 번호 (1)~(5)에 각각 마크하시오.

 

<처리조건>

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

(2) 배열의 크기가 4일 경우 배열의 요소는 0부터 3까지 구성된다. 예를 들어, A라는 배열의 크기가 4일 경우 배열의 요소는 A[0]부터 A[3]로 구현된다고 가정한다.

(3) <그림> 및 <답항보기>에서 부등호 기호

“>=”는 부등호 좌측의 값이 우측의 값보다 크거나 같다는 의미이고,

“<=”는 작거나 같다는 의미이고,

“>”는 크다는 의미이고,

“<”는 작다는 의미이며,

“<>”는 같지 않다 의미이다.

 

<순서도>

image

<답항보기>

1

d[i]

2

d[i]>d[left]

3

d[i]>d[left-1]

4

d[i]<=d[i+1]

5

d[i]

6

d[i]>=d[i-1]

7

d[i]>d[i+1]

8

d[i]>buf

9

d[i]>d[i-1]

10

d[i+1]

11

d[i+1]>d[i-1]

12

d[i-1]>d[i]

13

d[i+1]>buf

14

d[i-1]>d[right]

15

d[i-1]>d[right+1]

16

d[i-1]>d[right-1]

17

d[i+1]=d[i]

18

right=right-1

19

left<>right

20

left=left+i

21

left=left-1

22

left=left-i

23

left=right

24

left=d[i]

25

right=shift

26

shift=right-left

27

right=d[i]

28

right=i+buf

29

right=right+1

30

right=right+i

31

i=left

32

right=right-i

33

left=i

34

shift=i+1

35

shift=i-1

36

shift=left+right

37

shift=left-right

38

shift=right+1

39

shift=right-1

40

left=shift

 

<정답>

1. i = left

2. d[i] > d[i + 1]

3. right = shift

4. d[i – 1] > d[i]

5. left = shift

 

<순서도 정답>

image

 

<설명>

위 순서도를 C#으로 옮겨본 소스 코드는 아래와 같다.

image

 

위 코드를 Ctrl+F5번을 눌러 실행하면, 3, 2, 4, 1의 4개의 데이터를 입력했을 때, 실행 결과 1, 2, 3, 4순으로 정상적으로 오름차순 정렬됨을 알 수 있다.

image

 

끝.

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


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 C# 언어 사양서(Language Specification) 다시 보기 - Administrator 2010-05-16 4003
현재글 C#으로 풀어보는 정보처리기사 실기 2008/11/02 기출문제 알고리즘 - Administrator 2010-05-14 3586
다음글 Visual Studio 2010 Wallpaper 제공 사이트 - Administrator 2010-05-14 3550
관련 페이지 리스트
numtitlenamedateview
388 C 언어에서 값 전달과 참조 전달(Call By Value and Call By Re... Administrator 2023-03-09 3559
387 병합 알고리즘 순서도 2022-10-22 5091
386 C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기 Administrator 2022-01-09 4402
385 C 언어: scanf 사용해서 표준 입력인 콘솔로부터 나이를 정수로 입력 받아 출력 Administrator 2022-01-07 3214
384 Java 코드 샘플 - Function 인터페이스로 람다 식 만들기 Administrator 2022-01-04 3110
383 C# 코드 샘플 - 널 조건부 연산자 사용하기 Administrator 2022-01-02 3150
382 C# 코드 샘플 - 널 병합 연산자와 default 키워드 Administrator 2022-01-02 3062
381 C# 코드 샘플 - 널 병합 연산자로 문자열 변수의 NULL 값 확인하기 Administrator 2022-01-02 2974
380 C# 강의 - 14세 미만 체크 메서드 구현 Administrator 2022-01-01 3028
379 C 언어 천 단위 콤마 찍기 thousands_separator.c Administrator 2021-12-30 4159
378 for 문 순서도 - for 문(for loop) 순서도(flowchart) Administrator 2021-12-28 6870
377 C 언어 코드 샘플 - 전처리기 - 조건부 컴파일 Administrator 2021-12-27 3051
376 C 언어 코드 샘플 - 전처리기 - 매크로 함수 Administrator 2021-12-27 3019
375 http-server 설치하기 - 로컬 루프백 주소로 웹페이지 실행 2021-12-27 3023
374 C 언어 코드 샘플 - N명의 학생의 점수를 입력받아 1차원 배열에 저장 후 총점 구... Administrator 2021-12-27 3079
373 Java 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2954
372 C 언어 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2995
371 C# 교과서 강좌 - LINQ - Select 확장 메서드에 익명 형식 사용하기 Administrator 2021-12-26 3114
370 C# 교과서 강의 - LINQ - Select 확장 메서드를 사용하여 새로운 형태로 ... Administrator 2021-12-26 3029
369 C 언어 코드 샘플 - static-shared - 정적(공유) 변수 사용하기 Administrator 2021-12-26 3046
 
 
 
손님 사용자 Anonymous (손님)
로그인 Home