프로그래밍 정답

1	④	2	⑤	3	④	4	②	5	④
6	⑤	7	④	8	⑤	9	②	10	③
11	②	12	①	13	②	14	④	15	③
16	③	17	①	18	③	19	⑤	20	①

해 설

1. [출제의도] 주어진 조건에 따라 논리적으로 문제를 해결할 수 있는가를 묻는 문제이다.

오른쪽 방보다는 왼쪽 방, 상위보다는 하위 방의 수를 먼저 꺼내야 하므로 3보다는 2가 먼저, 2보다는 4, 5가, 5보다는 4를 먼저 꺼내야 한다.

2. [출제의도] 조건문을 이용한 기본적인 수식의 이해 능력을 평가하는 문제이다.

a, b가 양의 정수이면 두 수의 합은 항상 차보다 크다. a+b=s, a-b=d이므로 a=(s+d)/2이다.

3. [출제의도] 프로그램 개발 과정에 대한 이해를 평가하기 위한 문제이다.

순서도를 작성한 후 이를 기초로 코딩 작업을 하며, 알고리즘은 프로그래밍 언어의 종류에 관계없이 고유한 기호와 방식으로 표현한다.

4. [출제의도] 알고리즘에 따라 순차적, 논리적으로 문제를 해결할 수 있는가를 묻는 문제이다.

로봇이 (1)~(6)단계까지 진행하면 로봇은 단계에 따라 (1,1), (1,2), (2,1), (3,4), (1,3)으로 움직인다. 그 다음 (1,3)에서 (2)~(6)단계를 진행하면 로봇은 (ㄴ)위치에 도착한다.

5. [출제의도] while(While) 문이 실행되는 과정을 정확히 이해하고 있는가를 묻는 문제이다.

while(While)문의 조건을 만족하는 동안 a, b의 값은 (11,19), (12,18), (13,17), (14,16), (15,15)로 변한다. 마지막 (15,15)는 조건을 만족하지 않으므로 while(While)문을 빠져 나온다.

6. [출제의도] 구조화 프로그램의 개념 및 형태를 이해하고 있는가를 묻는 문제이다.

(가)는 반복문, (나)는 조건문, (다)는 순차 구조의 개념이다. if(IF)는 조건문이며, for(For)는 반복문이다.

7. [출제의도] 배열과 제어문으로 구성한 프로그램의 분석 능력을 평가하기 위한 문제이다.

먼저 자신의 석차를 1로 배정하고 배열 내에 자신보다 큰 수가 있으면 1씩 증가한다. 배열 안의 수를 100으로 나눈 몫을 새로운 배열의 첨자로 사용하여 몫이 같으면 빈도수를 증가한다.

8. [출제의도] 프로그램의 논리 구조에 대한 이해 능력을 평가하기 위한 문제이다.

프로그램의 알고리즘은 다음과 같다.

(1) n을 입력 받는다.

(2) n이 짝수이면 2로 나눈 값을 n에 저장하고, 홀수이면 1을 더해 다시 n에 저장한다.

(3) n을 출력한다.

(4) n이 1과 같거나 작으면 프로그램을 종료하고   1보다 크면 단계(2)로 간다.

[오답풀이] ① 0을 포함한 음의 정수이면 프로그램은 바로 종료되고, 양수이면 계속 나누어지므로 무한루프가 되지 않는다. ② n이 11이면 출력되는 수는 12, 6, 3, 4, 2, 1이다. ③，④ 짝수, 홀수 모두 출력된다.

9. [출제의도] 수리, 논리적 분석 능력을 평가하는 문제이다.

두 사람이 한 번씩 가져가는 것을 한 회라고 하면 한 회에 가져가는 바둑알의 수가 전체 바둑알의 약수이면 나중에 가져가는 사람이 이기게 된다. 따라서 K=(전체 바둑알의 약수-1)로 정하고 앞사람이 몇 개를 가져가든 나중에 가져가는 사람은 한 회에 두 사람이 가져간 바둑알의 합이 N의 약수가 되게 하면 이긴다.

10. [출제의도] 논리적 사고 능력을 평가하는 문제이다.

한 번씩 경기하는 리그전을 모두 마치면 승수만큼 패수가 있어야 한다. 또한 N개 팀이 리그전을 하면 (N-1)승을 한 팀이 2팀 이상이 될 수 없다.

11. [출제의도] 제어문을 사용한 프로그램을 분석하는 능력을 평가하는 문제이다.

두 현이 교차하려면 한 현의 시작점과 끝점 사이에 반드시 다른 현의 한 점만 있어야 한다.

12. [출제의도] 수리적인 내용의 프로그래밍 능력을 평가하기 위한 문제이다.

문제에 제시된 수열은 공비가 3인 등비수열이며 변수 a는 n차 항의 값, s는 n차 항까지의 합이다. 등비수열의 일반식은 an=an-1*r(공비)이다.

13. [출제의도] 기본 제어문의 해석 능력을 평가하는 문제이다.

35를 1~35까지의 모든 자연수로 나누었을 때 나누어 떨어지는 값, 즉 35의 약수를 출력한다.

14. [출제의도] 수식 및 논리 연산자를 정확하게 이해하고 있는지를 평가하는 문항이다.

어떤 수 N을 3, 4, 5로 나누었을 때, 나머지가 2, 3, 4라면 N+1을 3, 4, 5로 나누면 나누어 떨어진다. 따라서 N+1은 3, 4, 5의 공배수이다.

15. [출제의도] 사용자 정의 함수의 처리 과정을 정확히 이해하고 있는가를 묻는 문제이다.

for(For)문의 첨자 a를 함수 f()의 매개 변수로 전달하고 총 4번 함수를 호출하고 그 결과를 출력한다.

16. [출제의도] 변수의 저장 범위를 정확히 이해하고 있는가를 묻는 문제이다.

C 언어의 char형은 127, 비주얼 베이직 언어의 Byte형은 255를 초과하는 값은 저장할 수 없다.

17. [출제의도] 순서도의 분석 능력을 평가하기 위한 문제이다.

A > B일 때,

(1) C > A이면 중간 수는 A이다.

(2) C <= A이고 C <= B이면 중간 수는 B이다.

(3) C <= A이고 C > B이면 중간 수는 C이다.

18. [출제의도] 1차원 배열의 활용 능력을 평가하는 문제이다.

반복문을 이용하여 d[0]에 저장되어 있는 값부터 나머지 값과 비교하여 중복된 값이 몇 쌍인지를 헤아린다.

19. [출제의도] 반복문과 선택문을 이용한 기본 프로그램을 분석하는 능력을 평가하는 문제이다.

변수 d를 1에서 20까지 1씩 증가하면서 그 값이 7 이상이면 변수 a를 1씩 증가시키고 그렇지 않으면 변수 b를 1씩 증가시킨다.

20. [출제의도] 2차원 배열을 이용한 프로그램 분석 능력을 평가하는 문제이다.

프로그램은 n-1행에 있는 수를 검색하여 반복되는 횟수와 해당 수를 n행에 저장한다. 0행에 저장된 수는 1개의 1, 1행에 저장된 수는 2개의 1, 2행에 저장된 수는 1개의 2와 1개의 1이다. 따라서 위와 같은 방식으로 3행에 저장된 수를 검색하면 1개의 1, 1개의 2, 2개의 1이 된다.