책 내용 질문하기
알고리즘-025 석차구하기_유형1
도서
2016 시나공 정보처리기사 실기
페이지
144
조회수
362
작성일
2016-03-19
작성자
첨부파일

1) Rank (i) = 1 이라고 Rank 에 동일한 숫자를 입력키 위해 8~10번 반복문을 사용하기 보다는,

명령문 18번 앞에 Rank(i)= 1 이라는 명령문을 삽입하여 주면 될 것 같은 데....

이를 위해서 반복문이 사용한다는 것은 비효율적이어서 이를 생각해 내기가 너무 어렵웠네요

( 실기 시험에서 알고리즘 이해는 제시되지 않는 내용이어서, 우선 문제를 보고, 그다음에 플로챠트를 보면서 문제 풀면서 잘 이해가 되지 않는 경우에 알고리즘 이해나 정답을 보면서 검토하고 있는 데, 이 문제의 경우, 혹시 답항 보기가 있었다면 디버깅이라도 돌려 보면서 생각해보았을 텐데, 앞의 알고리즘 이해를 보지 않은 상태에서 이를 생각해 내기에는 좀 .... 그런데 실제 실기 문제에서도 이런 유형이 출제되는 지요?? )

2) 만약 Rank (10)이라고 배열 선언만 하고, Rank(i)=1 이란 배열값 할당이 없는 상태에서, Rank(i)= Rank(i)+1 이라는 명령문을 사용한다면,오류인지요??

아니면 rank(i) 에 초기값이 할당되지 않아서 0으로 인식하고 1 이라는 값을 할당하는지요??

3) 배열을 출력할때 이 문제와 같이 Jumsu , Rank 만 출력명령을 해도,교재 140 페이지 하단의 A(i) 반복문을 사용한 출력 명령문과 동일한 명령문이 되는 건지요?? 그렇다면 배열 출력문에서 궅이 반복문으로 표현할 필요가 있나요??

답변
2016-03-21 09:39:59

안녕하세요.

1), 2)

순위는 다른 상대와 비교되기 전에는 항상 1등입니다.

비교된 후에 자신보다 높지 않은 점수들만 있다면 초기의 지정된 등수 1을 그대로 출력해야 하므로 초기화하는 것은 꼭 필요합니다.

하지만 18번 전에 rank(i)=1을 하게 되면

다른 점수와 비교한 후 현재 내 점수가 낮으면 등수를 증가(밀려나게)시켜야 하는데 매번 rank(i)=1을 하게 되면 비교할 때마다 해당 위치의 등수는 1이 저장된 후 증가됩니다.

즉 자신보다 높은 점수가 있어 18번 전에 rank(i)=1을 해서 rank(i)가 1이 된 상태에서 18번에서 석차를 증가시면 rank(i)=rank(i)+1에 의해 2가 되는데, 다음 점수도 자신보다 높아 다시 등수를 증가하려고 18번쪽으로 내려오면 그 전에 rank(i)=1을 만다 rank(i)는 다시 1이 된 상태에서 증가하므로 rank(i)는 1이 되었다 다시 2가 되는 과정을 반복하게 됩니다.

알고리즘이 어려운 이유가 석차를 구하는 방법이라도 "나보다 점수가 높은 사람이 있으면 내 등수가 증가(밀려난다)라는" 기본 개념하에 순서도가 구성되는 형태는 다양할 수 있으므로 순서도를 보고 우선 출제자의 의도를 파악하는 것이 가장 중요합니다.

실제 시험에서는 해당 순서도에 대한 설명이 없는 상태에서 순서도를 파악해야 하므로 어려울 수 있습니다.

변수에 1을 누적하여 증가하는 누적 변수의 경우 반드시 초기화를 수행해야 합니다.

rank(i) = rank(i) + 1 과 같이 rank(i)도 누적되는 변수이므로 ⑧~⑩ 과정과 같은 초기화 과정이 필요합니다.

3)

배열을 출력할 경우 대표 배열의 변수명만 적으면 해당 배열의 값이 모두 출력된다는 의미입니다.

해당 부분에 빈 괄호를 만들기 위해서 반복문을 이용해 실제 각 배열의 값을 하나씩 출력하는 과정으로 표시되기도 합니다.

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

  • *
    2016-03-21 09:39:59

    안녕하세요.

    1), 2)

    순위는 다른 상대와 비교되기 전에는 항상 1등입니다.

    비교된 후에 자신보다 높지 않은 점수들만 있다면 초기의 지정된 등수 1을 그대로 출력해야 하므로 초기화하는 것은 꼭 필요합니다.

    하지만 18번 전에 rank(i)=1을 하게 되면

    다른 점수와 비교한 후 현재 내 점수가 낮으면 등수를 증가(밀려나게)시켜야 하는데 매번 rank(i)=1을 하게 되면 비교할 때마다 해당 위치의 등수는 1이 저장된 후 증가됩니다.

    즉 자신보다 높은 점수가 있어 18번 전에 rank(i)=1을 해서 rank(i)가 1이 된 상태에서 18번에서 석차를 증가시면 rank(i)=rank(i)+1에 의해 2가 되는데, 다음 점수도 자신보다 높아 다시 등수를 증가하려고 18번쪽으로 내려오면 그 전에 rank(i)=1을 만다 rank(i)는 다시 1이 된 상태에서 증가하므로 rank(i)는 1이 되었다 다시 2가 되는 과정을 반복하게 됩니다.

    알고리즘이 어려운 이유가 석차를 구하는 방법이라도 "나보다 점수가 높은 사람이 있으면 내 등수가 증가(밀려난다)라는" 기본 개념하에 순서도가 구성되는 형태는 다양할 수 있으므로 순서도를 보고 우선 출제자의 의도를 파악하는 것이 가장 중요합니다.

    실제 시험에서는 해당 순서도에 대한 설명이 없는 상태에서 순서도를 파악해야 하므로 어려울 수 있습니다.

    변수에 1을 누적하여 증가하는 누적 변수의 경우 반드시 초기화를 수행해야 합니다.

    rank(i) = rank(i) + 1 과 같이 rank(i)도 누적되는 변수이므로 ⑧~⑩ 과정과 같은 초기화 과정이 필요합니다.

    3)

    배열을 출력할 경우 대표 배열의 변수명만 적으면 해당 배열의 값이 모두 출력된다는 의미입니다.

    해당 부분에 빈 괄호를 만들기 위해서 반복문을 이용해 실제 각 배열의 값을 하나씩 출력하는 과정으로 표시되기도 합니다.

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

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