프로그래밍 정답

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

해 설

1. [출제의도] 프로그래밍의 개요와 절차에 관한 기본 용어를 정확히 이해하고 있는지를 묻는 문제이다.

디버깅은 프로그램의 작성 및 실행 시에 발생하는 오류를 수정하는 것이다.

[오답풀이] 문법 오류는 프로그램의 번역 과정에서 발생한다.

2. [출제의도] 최적해를 찾는 알고리즘에 대한 이해를 평가하는 문제이다.

뱃삯이 최소가 되기 위해서는 가격이 가장 비싼 가축을 우선적으로 최대한 많이 실어야 한다. 돼지를 4마리, 양을 4마리 실으면 총 뱃삯이 800원이 된다.

3. [출제의도] 여러 가지 자료형의 저장 범위에 대한 지식을 묻는 문제이다.

c언어의 변수 a는 문자 변수이므로 문자열을 대입하면 오류가 발생한다. VB언어의 변수 a는 Byte형에 문자열을 대입하였기 때문에 오류가 발생한다. 또한 정수형 변수 d에는 실수를 대입하였으므로 자료가 정확하게 입력되지 않는다.

4. [출제의도] 순서도의 구조와 흐름을 파악하는 능력을 평가하는 문제이다.

순서도에 따라 문장을 처리하면 n이 2의 배수이고, 3으로 나누었을 때 나머지가 1인 수가 출력된다. 18은 3으로 나누어 떨어지므로 출력되지 않는다.

5. [출제의도] 순서도에 사용된 비교 ․ 판단 구조를 논리식으로 표현하는 능력을 평가하는 문제이다.

2의 배수는 n%2==0(n Mod 2 = 0)으로 표현하고, 3으로 나누었을 때 나머지가 1인 것은 n%3 ==1(n Mod 3 = 1)로 표현할 수 있다. 그리고 두 식을 논리곱하면 된다.

6. [출제의도] 주어진 자료와 조건을 분석하고, 최적해를  탐색하는 능력을 평가하는 문제이다.

공장 B는 7일 후, C는 9일 후, D는 13일 후에 작업을 시작한다. 공장 E는 B로부터 12일 후, C로부터 13일 후, D로부터 16일 후 부품을 받으므로 가장 긴 16일 후에 작업을 시작한다. 그리고 공장 F는 D로부터 16일 후, E로부터 23일 후 부품을 받으므로 23일  후에 작업을 시작하여 완성품은 총 24일 걸린다.

7. [출제의도] 자료를 분석하여 프로그램 작성에 필요한 변수를 바르게 선택할 수 있는지를 묻는 문제이다.

연간 총 판매량은 실수인 동시에, 정수 범위 보다 큰 값이므로 정수형 변수에 저장할 수 없다.

8. [출제의도] 제어문을 적용한 프로그램의 작성 능력을 평가하는 문제이다.

cnt는 연속된 1의 개수를 저장한다. cnt의 값이  max보다 크면 cnt 값을 max에 저장하고 다음 연속된 1의 개수를 구하기 위해 cnt를 0으로 초기화 한다.

9. [출제의도] 논리 연산자 및 논리식에 대한 이해력을  평가하는 문제이다.

논리식을 분석하면 그림에 나타난 순위는 영일, 현민, 동건, 인성 순이다.

10. [출제의도] 최적해를 찾는 알고리즘에 대한 이해 능력을 평가하는 문제이다.

주어진 조건에 따라 A, B, E, F를 선택하면 최대 점수인 40점을 얻을 수 있다.

[오답풀이] B, D, E, F를 선택하면 43점이 되지만 D, E, F가 연속된 3개이므로 조건을 만족하지 못한다.

11. [출제의도] 제어문과 연산자를 적용한 수에 관한 프로그램의 해석 능력을 평가하는 문제이다.

프로그램은 1부터 시작하여 2씩 증가하는 수 중 3으로 나누어 떨어지는 수를 출력한다. 그러므로 홀수이면서 3의 배수에 해당하는 수가 출력된다.

12. [출제의도] 논리적 절차를 통해 문제를 해결하는 능력을 평가하는 문제이다.

보석 A, B, D, E를 선택하면 무게의 합은 29g이고 가격은 230원이 된다.

13. [출제의도] 배열을 이용한 기본적인 성적 집계 방식에 대하여 이해하고 있는지를 묻고 있는 문제이다.

프로그램을 분석하면 배열 x, y의 요소 값이 같은 경우 s가 2씩 증가하는 것을 알 수 있다.

14. [출제의도] 2차원 배열에 대한 조작 능력을 평가하는 문제이다.

프로그램에서 b는 배열 m의 가로 첨자, y는 배열 k의 세로 첨자로 사용되었다. 두 첨자 b, y의 관계는 0 → 2, 1 → 1, 2 → 0과 대응된다. 그러므로 y는 2에서 b를 빼면 구할 수 있다.

15. [출제의도] 사용자 정의 함수의 다양한 활용 방법을 이해하는지 묻는 문제이다.

함수 f는 a, b를 매개 변수로 받아 이 중 작은 값을 반환한다. 그러므로 프로그램의 최종 결과는 함수의 매개 변수로 사용된 수 중 가장 작은 3이 출력된다.

16. [출제의도] 기본 연산자를 실무적 프로그램 작성에 활용할 수 있는지 평가하는 문제이다.

버스 번호 3자리 중 100의 자리가 출발 지역, 1의 자리가 도착 지역이다. 135번 버스는 1지역에서 5지역까지 운행하므로 중간인 2지역에 내릴 수 있다.

17. [출제의도] 기본 수식의 연산 방법과 형 변환에 대한 지식을 평가하는 문제이다.

b에 저장되는 값은 1.5(=0.5 + 1.0)이며, 이를 정수로 변환하면 1이 출력된다.

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

[단계 1] n1과 n2 중 큰 값을 n2에 저장한다.

[단계 2] n2를 2로 나누어 그 몫을 n2에 저장한다.

[단계 3] n1 = n2가 될 때까지 [단계 1]에서 [단계 2]를 반복한다.

19. [출제의도] 제어문을 이용한 배열 조작 능력을 평가하는 문제이다.

문자 S, A, O가 배열 m의 어느 위치에 있는지를 찾고, 그 위치의 첨자를 서로 바꾸어 그 곳에 해당하는 문자를 출력한다.

20. [출제의도] 문제 해결을 위한 프로그래밍 분석 능력을 평가하는 문제이다.

n을 시작으로 한 연속된 세 수의 합이 9가 되기 위해서는 n+(n+1)+(n+2)=9의 관계를 만족해야 한다. 즉, 3n=6이고 n은 정수이어야 한다. 그러므로 연속 수는 2, 3, 4이다. 이와 같은 수학적 원리를 프로그램에 적용하면 a-(1+ … +(b-1))가 b의 정수배가 되어야 한다.