책 내용 질문하기
정보처리기사 실기
도서
[2011] 정보처리기사 실기
페이지
127
조회수
164
작성일
2012-06-30
작성자
첨부파일

선택정렬에서 플로차트 1번에 답이 도무지 이해가 안가는데요.

초기화하는데 왜 j값이 들어가는지 이해가 안갑니다.

2. 그리고 137P에 버블정렬 플로차트에서

반복문이 끝나고 답이 2번에 보면 right=shift라고 되어 있던데

왜 그런지 도무지 이해가 안되요. 해석을 설명해주세요

3. 석차구하기에서 플로차트 답이 도무지 이해가 되지않는데요.

1,2,3번 상세한 설명 부탁드릴께요.

답변
2012-07-02 09:38:55

안녕하세요.

1)

비교 대상의 첫 번째 자료는 비교 기준 값이 있는 자료의 바로 다음 자료에서 시작합니다.

비교 기준 값이 i이므로

8번 동그라미에서 J에 i를 저장하고

그 다음에 J=J+1을 수행하여 기준 값(i)이 있는 자료의 바로 다음(+1) 자료에서 시작하도록 한 것입니다.

2)

정렬할 자료가 5개인 경우를 예로 설명하겠습니다.

우선 왼쪽에서 오른쪽 방향으로 정렬할 때
정렬의 기준을 Right라고 하면

첫번째와 두번째 -> Right 1
두번째와 세번째 -> Right 2
세번째와 네번째 -> Right 3
네번째와 다섯번째 -> Right 4

이와 같이 Right를 4까지만 해도 다벗번째 배열까지 비교 대상이 됩니다.
하지만 Right를 5까지하면

다섯번째와 여섯번째가 비교되어야 하는데 여섯번째는 없죠.
그러므로 오른쪽 방향으로는 배열의 크기보다 -1인 Right-1까지 비교하면 됩니다.


이젠 반대로
우선 오른쪽에서 왼쪽 방향으로 정렬할 때
정렬의 기준을 Left라고 하면

다섯번째와 네번째 -> Left 5
네번째와 세번째 -> Left 4
세번째와 두번째 -> Left 3
두번째와 첫번째 -> Left 2

이와 같이 Left를 2까지만 해도 첫번째 배열까지 비교 대상이 됩니다.
하지만 Left를 1까지하면

첫번째와 영번째가 비교되어야 하는데 영번째는 없죠.
그러므로 왼쪽 방향으로는 배열의 크기보다 +1인 Left+1까지 비교하면 됩니다.

다음 정렬의 시작 위치를 지정할 때는 마지막으로 자료 교환을 수행한 시점부터 하면 됩니다.

정렬이 중간에서 끝났다면 그 위치부터 다음 정렬을 수행하면 되죠. 그 이전이나 이후는 정렬이 되어 있는 상태이므로 굳이 다시 정렬할 필요가 없기 때문입니다.

현재 정렬 위치는 Shift가 가지고 있으므로

오른쪽 방향의 정렬이 완료된 후, 즉 괄호 2번은 Right = Shift

왼쪽 방향의 정령이 완료된 후, 즉 괄호 4번은 Left = Shift

로 적용하시면 됩니다.

3)

정렬은 내림차순과 오름차순이 있습니다.

예를 들어 점수가 500, 800, 400이 있다면

내림차순으로 정렬하면 800, 500, 400이 됩니다. 즉 높은 점수에서 낮은 점수순으로 정렬하는 것이죠.

이때 순위를 부여하면 가장 높은 800이 1, 500이 2, 400이 3이 됩니다.

반대로 오름차순은

400, 500, 800으로 낮은 점수에서 높은 점수순으로 정렬합니다.

이때 순위를 부여하면 가장 낮은 400이 1, 500이 2, 800이 3이 됩니다.

내림차순이면

HAP(i) < HAP(J)

지금 석차를 부여할 i보다 비교되는 점수 J가 작으면 순위 변수를 증가한다는 것은

나보다 점수가 낮으면 순위 변수의 값을 +1 하라는 것입니다.

즉 순위 변수가 +1씩 증가될 때마다 등수는 내려가는 것이죠.

순위는 1, 2, 3, 인데, 점수가 낮으면 2등, 3등 형태도 순위 변수 증가(등수 내려 감)되는 것입니다.

반대로 오름차순이면

HAP(i) > HAP(J)

나보다 점수가 높으면 순위 변수의 값을 +1 하라는 것입니다.

즉 순위 변수가 +1씩 증가될 때마다 등수는 내려가는 것이죠.

순위는 1, 2, 3, 인데, 점수가 높으면 2등, 3등 형태도 순위 변수 증가(등수 내려 감)되는 것입니다

석차 구하는 과정을 먼저 이해한 후 순서도를 디버깅 해보셔야 합니다.

석차구하는 과정이 잘 설명되어 있는 143쪽의 알고리즘의 이해 부분을 먼저 학습한 후 학습한 내용과 순서도의 과정을 비교하면서 이해하시면 좀더 쉽게 이해하실 수 있습니다.

오늘도 즐거운 하루되세요.

"
  • *
    2012-07-02 09:38:55

    안녕하세요.

    1)

    비교 대상의 첫 번째 자료는 비교 기준 값이 있는 자료의 바로 다음 자료에서 시작합니다.

    비교 기준 값이 i이므로

    8번 동그라미에서 J에 i를 저장하고

    그 다음에 J=J+1을 수행하여 기준 값(i)이 있는 자료의 바로 다음(+1) 자료에서 시작하도록 한 것입니다.

    2)

    정렬할 자료가 5개인 경우를 예로 설명하겠습니다.

    우선 왼쪽에서 오른쪽 방향으로 정렬할 때
    정렬의 기준을 Right라고 하면

    첫번째와 두번째 -> Right 1
    두번째와 세번째 -> Right 2
    세번째와 네번째 -> Right 3
    네번째와 다섯번째 -> Right 4

    이와 같이 Right를 4까지만 해도 다벗번째 배열까지 비교 대상이 됩니다.
    하지만 Right를 5까지하면

    다섯번째와 여섯번째가 비교되어야 하는데 여섯번째는 없죠.
    그러므로 오른쪽 방향으로는 배열의 크기보다 -1인 Right-1까지 비교하면 됩니다.


    이젠 반대로
    우선 오른쪽에서 왼쪽 방향으로 정렬할 때
    정렬의 기준을 Left라고 하면

    다섯번째와 네번째 -> Left 5
    네번째와 세번째 -> Left 4
    세번째와 두번째 -> Left 3
    두번째와 첫번째 -> Left 2

    이와 같이 Left를 2까지만 해도 첫번째 배열까지 비교 대상이 됩니다.
    하지만 Left를 1까지하면

    첫번째와 영번째가 비교되어야 하는데 영번째는 없죠.
    그러므로 왼쪽 방향으로는 배열의 크기보다 +1인 Left+1까지 비교하면 됩니다.

    다음 정렬의 시작 위치를 지정할 때는 마지막으로 자료 교환을 수행한 시점부터 하면 됩니다.

    정렬이 중간에서 끝났다면 그 위치부터 다음 정렬을 수행하면 되죠. 그 이전이나 이후는 정렬이 되어 있는 상태이므로 굳이 다시 정렬할 필요가 없기 때문입니다.

    현재 정렬 위치는 Shift가 가지고 있으므로

    오른쪽 방향의 정렬이 완료된 후, 즉 괄호 2번은 Right = Shift

    왼쪽 방향의 정령이 완료된 후, 즉 괄호 4번은 Left = Shift

    로 적용하시면 됩니다.

    3)

    정렬은 내림차순과 오름차순이 있습니다.

    예를 들어 점수가 500, 800, 400이 있다면

    내림차순으로 정렬하면 800, 500, 400이 됩니다. 즉 높은 점수에서 낮은 점수순으로 정렬하는 것이죠.

    이때 순위를 부여하면 가장 높은 800이 1, 500이 2, 400이 3이 됩니다.

    반대로 오름차순은

    400, 500, 800으로 낮은 점수에서 높은 점수순으로 정렬합니다.

    이때 순위를 부여하면 가장 낮은 400이 1, 500이 2, 800이 3이 됩니다.

    내림차순이면

    HAP(i) < HAP(J)

    지금 석차를 부여할 i보다 비교되는 점수 J가 작으면 순위 변수를 증가한다는 것은

    나보다 점수가 낮으면 순위 변수의 값을 +1 하라는 것입니다.

    즉 순위 변수가 +1씩 증가될 때마다 등수는 내려가는 것이죠.

    순위는 1, 2, 3, 인데, 점수가 낮으면 2등, 3등 형태도 순위 변수 증가(등수 내려 감)되는 것입니다.

    반대로 오름차순이면

    HAP(i) > HAP(J)

    나보다 점수가 높으면 순위 변수의 값을 +1 하라는 것입니다.

    즉 순위 변수가 +1씩 증가될 때마다 등수는 내려가는 것이죠.

    순위는 1, 2, 3, 인데, 점수가 높으면 2등, 3등 형태도 순위 변수 증가(등수 내려 감)되는 것입니다

    석차 구하는 과정을 먼저 이해한 후 순서도를 디버깅 해보셔야 합니다.

    석차구하는 과정이 잘 설명되어 있는 143쪽의 알고리즘의 이해 부분을 먼저 학습한 후 학습한 내용과 순서도의 과정을 비교하면서 이해하시면 좀더 쉽게 이해하실 수 있습니다.

    오늘도 즐거운 하루되세요.

    "
· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.