프로그래밍 정답

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

해 설

1. [출제의도] 프로그래밍 언어의 종류와 상대적 특징을 정확히 이해하고 있는가를 묻는 문제이다.

기계어와 어셈블리어는 실행 속도가 고급 언어에 비해 우수하고 고급 언어 중에서도 자바는 웹 프로그래밍 편의성과 이식성이 우수하다.

2. [출제의도] 프로그램 작성을 위한 자료 분석력과 논리적인 이해력을 평가하기 위한 문제이다.

전력 요금은 “기본 요금+전력량 요금”이다. 문제의 자료는 사용량에 따라 요금이 달라지는 누진제에 대해 설명하고 있다. 200kWh 사용 요금은 100kWh의 약 3배이다.

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

4행 혹은 4열부터 지뢰의 개수에 따라 지뢰를 표시하면 문제를 쉽게 해결할 수 있다.

4. [출제의도] 프로그래밍을 위한 기본 능력인 논리적 문제 해결 능력을 평가하는 문제이다.

조건에 따라 친족 관계를 표시하면 E는 A의 아버지의 형제가 된다. 따라서 3촌이다.

5. [출제의도] 자료에 따라 올바른 변수 형을 사용할 수 있는지를 묻는 문제이다.

자료의 사원 번호는 숫자처럼 보이지만 ‘-’를 포함한 문자이며 자료의 크기도 Long 형에 입력하기에는 크다. 실제 프로그램에서는 일련번호 같은 경우 ‘-’를 빼고 숫자만 입력하는 경우도 있지만, 이 문제에서는 숫자만 입력해도 변수의 처리 범위를 넘는다.

6. [출제의도] 프로그래밍 절차와 산출물을 파악하고 있는지를 평가하는 문제이다.

(가)는 입출력 설계, (나)는 순서도 작성, (다)는 문서화 단계의 산출물이다,

7. [출제의도] 비트 논리 연산자의 사용 능력과 논리적인 문제 해결 능력을 측정하는 문제이다.

4비트로 숫자를 표기하고 AND 연산 후 마지막 두 자리가 01혹은 10인 것을 알 수 있다. 이 결과와 OR 연산의 결과에 따라 상위 두 자리가 00 혹은 01이 되는 것을 알 수 있으며, 조합하면 0001, 0010, 0101, 0110이 된다. 마지막으로 이것과 XOR하여 조건에 맞는 것을 구하면 0101이 된다.

8. [출제의도] 연산자의 종류, 우선 순위, 성질을 종합적으로 묻는 문제이다.

C 언어에서 정수형 변수를 나누기하면 비주얼 베이직의 정수 나눗셈처럼 몫의 정수 부분만 저장한다. 문제의 상자 안에는 논리 연산자를 사용하지 않았고, ‘<’는 관계(비교) 연산자이다.

9. [출제의도] 순서도를 해석하고 알고리즘을 파악하는 능력을 평가하는 문제이다.

순서도의 S=A+(B*0.5)에 길동의 성적을 입력하면 145가 되며 따라서 ‘최우수’가 출력된다.

10. [출제의도] 사용자 정의 재귀 함수를 해석하는 능력을 평가하는 문제이다.

123을 함수에 대입하면 func(12)+123%10 → func(1)+12%10 → func(0)+1%10 이 순서대로 호출되고 그 결과가 역순으로 리턴된다. 따라서 func(0) = 0, func(1) = 1, func(12) = 1+2가 리턴되어 최종 결과로 1+2+3을 리턴한다.

11. [출제의도] 배열 내의 요소 검색 기법에 대한 활용 능력을 평가하기 위한 문제이다.

프로그램에 따라 배열 n의 각 문자가 배열 p의 몇 번째 위치에 나타나는지 파악하여 해당 위치의 첨자를 출력한다.  n의 첫 번째 문자 'S'는 p의 네 번째 위치에 있으므로 첨자 3이 출력된다.

12. [출제의도] 반복문(while)의 정확한 동작 방식을 파악하고 있는가를 묻는 문제이다.

반복문 내에서 a는 1씩 증가, b는 1씩 감소하다가 a가 b보다 크거나 같으면 반복문을 빠져나간다. 답지에서 4가지는 두 수가 같은 경우에 반복문을 나오고 a=1, b=4는 a=3, b=2가 되면서 빠져나온다.

13. [출제의도] 비교 연산자와 논리 연산자의 연산 방식과 논리적인 유추 능력을 파악하는 문제이다.

문제의 조건을 만족하는 순서는 3가지(b<a<c<d, b<a<d<c, b<d<a<c)이다. 답지 중 3가지에 속하는 것은 40, 30, 60, 50 이다.

14. [출제의도] 배열과 제어문의 복합적인 구성을 파악할 수 있는 능력을 평가하는 문제이다.

1, 4, 16, 64를 이용하여 120에 대하여 최소 횟수의 감산으로 0을 만드는 프로그램이다. 64는 1번, 16은 3번, 4는 두 번 빼면 0이 된다.

15. [출제의도] 배열을 이용하여 평균값을 구하는 방법을 파악하는 문제이다.

변수 sum에는 취득한 점수의 총합이 저장되고, 변수 num에는 발사한 화살의 총수가 저장된다. 상자 안에는 취득한 점수의 총합을 계산하기 위해 배점에 따른 개수를 곱하여 누적하는 연산이 필요하다.

16. [출제의도] 2차원 배열에 자료를 할당하는 다양한 방식에 대한 논리적인 파악 능력을 평가하는 문제이다.

n(0,0), n(0,1), n(1,0), n(0,2), n(1,1), n(2,0), n(1,2), n(2,1), n(2,2)의 순서대로 k값이 1에서부터 1씩 증가하면서 입력된다.

17. [출제의도] 나머지 연산자의 의미를 파악하고 다양한 방법으로 구현할 수 있는 능력을 평가한다.

프로그램에서 반복문은 n이 m보다 같거나 클 경우 작아 질 때까지 n에서 m을 계속 빼다가 작아지면 그때의 n값을 리턴한다(처음부터 작은 경우는 즉시 리턴). 이것은 나머지 연산의 원리와 같다.

18. 정렬 알고리즘을 다차원 배열에 적용하는 능력을 평가하는 문제이다.

2차원 배열을 정렬하는 문제이다. 차원은 복잡하지만 기본적인 선택정렬 방식을 응용하여 구하는 코드이다. 제일 큰 수가 앞에 가는 것처럼 보이지만 반복문을 따라가면 제일 큰 수가 한 칸씩 밀리면서 앞의 수가 정렬된다.

19. [출제의도] 제어문에 의해 연산되는 수식을 파악하는 능력을 평가하기 위한 문제이다.

반복문에 따라 계산하면 변수 sum에는 1+2+2+ 3+3+3+4+4+4+4가 저장되며 이것은 1+4+9+16과 동일하다.

20. [출제의도] 2차원 배열에 대한 기본적인 연산을 수행하는 능력을 평가하기 위한 문제이다.

변수 r은 A열의 합을 저장하는 변수이다. r에는 n(0,0)+n(1,0)+n(2,0)이 입력되어야 하므로 반복문안의 빈칸에는 배열 n의 첫 열의 값만 누적하는 명령어가 필요하다.