EBS i 직탐영역 : 프로그래밍 모의고사(6월7일) 해설

1. [출제의도] 프로그래밍 언어의 특징에 대하여 이해하고 있는가?

[정답] : ①

[정답 해설] 어셈블리어는 고급 언어에 비해 코딩이나 디버깅, 유지 보수가 어렵다. 또한 고급 언어는 컴파일러나 인터프리터라는 언어 번역 프로그램을 사용하여 실행하며, C 언어는 절차 언어이다. 그리고 구조화 프로그래밍에서는 goto문을 사용하지 않는다.

2. [출제의도] 주어진 알고리즘을 해석할 수 있는가?

[정답] : ⑤

[정답 해설] 주어진 알고리즘의 변수의 변화 과정을 보면 다음과 같다.

a	sum	n
8	80	1
2	100	2
9	190	3
3	220	4
0
ave = 220÷4 = 55

따라서 출력되는 값은 55이다.

3. [출제의도] 소수 구하는 프로그램을 이해하는가?

[정답] :  ①

[정답 해설] 소수를 구하는 프로그램이다.

주어진 프로그램을 보면 2부터 그 자신까지 그 자신으로만 나누어떨어지는 경우만 출력되므로 출력되는 수는 소수이다.

4. [출제의도] 주어진 알고리즘을 해석할 수 있는가?

[정답] : ④

[정답 해설] 주어진 조건에 따라 이동하면

1) 동쪽으로 2칸

2) 벽이 있으므로 남쪽으로 이동해야 하는데 뱀이 있으므로 다시 서쪽으로 2칸

3) 벽이 있으므로 남쪽으로 1칸, 동쪽으로 1칸

4) 뱀이 있으므로 남쪽으로 1칸, 동쪽으로 1칸 연목이 나온다.

따라서 총 이동한 칸은 8칸이 된다.

EBS i 직탐영역 : 프로그래밍 모의고사(6월7일) 해설

5. [출제의도] 순서도를 이해할 수 있는가?

[정답] : ⑤

[정답 해설] 순서도에서 입력되는 a의 값에 따라 변수의 변화 과정을 살펴보면 다음과 같다.

a	s
4	4
3	7
2	9
1	10
0
2	12
1	13
0
99

6. [출제의도] 1차원 배열과 누적합의 원리를 이해하고 있는가?

[정답] : ④

[정답 해설] 배열 num의 요소값의 변화를 보면 다음과 같다.

num[0]=1

num[1]=num[1]+num[0]=0+1=1

num[2]=num[2]+num[0]+num[1]=0+1+1=2

num[3]=num[3]+num[0]+num[1]+num[2]=0+1+1+2=4

num[4]=num[4]+num[0]+num[1]+num[2]+num[3]=0+1+1+2+4=8

7. [출제의도] 변수의 자료형에 대하여 이해하고 있는가?

[정답] : ⑤

[정답 해설]  관리번호는 문자열이고, 도서명, 저자도 문자열이다. 그리고 구입년도는 정수형, 구입가격은 실수형 변수를 선언해야 한다.

EBS i 직탐영역 : 프로그래밍 모의고사(6월7일) 해설

8. [출제의도] 누적합을 구하는 알고리즘을 이해하고 있는가?

[정답] : ③

[정답 해설] 주어진 프로그램은 누적합을 구하는 프로그램이다. 1부터 10까지 각각의 수만큼 더하면 되므로 바깥쪽 제어변수 a를 누적하여 합을 구하면 된다.

9. [출제의도] 하노이 탑의 알고리즘을 이해하고 있는가?

[정답] : ②

[정답 해설] 공을 이동하는 과정을 보면 다음과 같다.

A① → C①

A② → B②

C① → B①

A③ → C③

B① → A①

B② → C②

A① → C①

10. [출제의도] 산술 연산자와 논리 연산자를 사용한 수식을 이해하고 있는가?

[정답] : ④

[정답 해설] 첫 번째 IF문에서 10000이상이거나 1000미만이면 출입할 수 없다. 또한 n1은 천의 자리이고, n2는 백의 자리이며, n3은 백으로 나누었을 때의 나머지이다.

두 번째 IF문에서 n1은 홀수이고 백의 자리인 n2가 천의 자리인 n1보다 커야하며, 십의 자리가 0이 아닌 것을 동시에 만족해야 한다.

11. [출제의도] 1차원 배열과 조건문을 이해하고 있는가?

[정답] : ②

[정답 해설]

배열 rep와 ans의 같은 위치에 있는 요소값이 같으면 그 위치에 있는 배열 sco의 요소값을 누적한 합을 구한다. 따라서 sum의 값은 3+2+1+2=8이 된다.

따라서 case문은 8인 B가 출력된다.

EBS i 직탐영역 : 프로그래밍 모의고사(6월7일) 해설

12. [출제의도] 순서도를 해석할 수 있는가?

[정답] : ⑤

[정답 해설]  순서도에서 RD-SD=500은 주행 거리인 RD가 500의 배수가 되면 만족하므로 500m마다 200원씩 요금이 올라간다. 또한 RT-ST=2은 주행 시간인 RT가 2의 배수가 되면 만족하므로 2분마다 요금이 100원씩 올라간다. 따라서 문제에서 주어진 목적지에 도착하면 요금은 기본요금 1500에 [200*14000/500 + 100*20/2]을 더한 8100원이 된다.

13. [출제의도] 고급 프로그래밍 언어에 대하여 알고 있는가?

[정답] : ④

[정답 해설]  (가) 고급 언어는 저급 언어에 비해 이해하기 쉽다.

(라) 실행하기 전에 반드시 번역 과정이 필요하지 않는 경우도 있다. 즉 컴파일러로 번역한 경우 실행 파일이 만들어지므로 다음에 실행할 경우에는 번역 과정 없이 바로 실행된다.

(마) 하드웨어를 직접 제어하는 기계어는 저급 언어에 속한다.

따라서 (나), (다)만 맞고 나머지는 틀리므로 영수는 -3, 길동은 4, 철수는 2점이 된다.

14. [출제의도] 조건에 맞게 프로그램을 작성할 수 있는가?

[정답] : ③

[정답 해설]  [단계 3]에서 입력되는 값이 어느 하나라도 0이면이라고 했으므로 키나 몸무게를 나타내는 변수 ht나 wt가 논리합 연산자를 사용하여 표현되어야 한다.

즉, (wt==0) || (ht==0) 비주얼 베이직 언어에서는 (wt=0) Or (ht=0) 이어야 한다.

15. [출제의도] 주어진 조건식을 표현할 수 있는가?

[정답] : ③

[정답 해설] 제어 ㉠에는 110이상이라고 했으므로 "fd>=110"이 들어가야 하며, ㉡에는 90이상 110미만이라고 했으므로 "fd>=90"이 들어가면 된다.

EBS i 직탐영역 : 프로그래밍 모의고사(6월7일) 해설

16. [출제의도] 논리 연산자를 잘 사용할 수 있는가?

[정답] : ④

[정답 해설]   주어진 조건에서 외부 장학금을 받으면 교내 장학금에서 제외되므로 D는 아니어야 한다. 또한 체육특기자인 경우에는 성적이 70점 이상이어야 하므로 두 조건이 동시에 만족해야 한다.

17. [출제의도] 주어진 프로그램을 이해하고 있는가?

[정답] : ②

[정답 해설] a while 문에 있는 변수 v가 0이 아니어야 while 반복문을 수행한다. ③에서 매개 변수 a와 b의 크기에 따라 논리적 오류가 발생하지는 않는다. ④에서 함수의 반환 값은 최대공약수가 아니라 최소공배수이다. ⑤의 변수 tmp는 지역변수이다.

18. [출제의도] 최대값을 구하는 프로그램을 이해하고 있는가?

[정답] : ③

[정답 해설] 주어진 프로그램은 최대값을 찾아 그 위치에 있는 배열의 요소값을 출력하는 프로그램이다. 따라서 최대값 8이 있는 위치의 배열 m의 요소값은 'c'이다.

19. [출제의도] 함수와 1차원 배열 프로그램을 이해하고 있는가?(스택의 원리를 알고 있는가?)

[정답] : ⑤

[정답 해설] 주어진 프로그램에서 10, 20, 30을 차례대로 배열에 넣은 후 맨 뒤에서 부터 꺼내면 30, 20이 나온다.  다시 배열에 40을 넣으면 배열에 들어가 있는 수는 10, 40이다. 다시 뒤에서부터 꺼내면 40, 10이 나오게 된다.

20. [출제의도] 이분 검색 알고리즘을 이해하고 있는가?

[정답] : ①

[정답 해설] 이분 검색은 검색 전에 정렬되어 있어야 하며, 순차 검색에 비해 평균적으로 빠르지만 항상 빠르지는 않다. 검색에 실패하면 음수를 반환한다.