본문 바로가기
5급 공채 (행정고시)/2020년 나책형

[20행(나)-1920해] 2020년 5급 공채 (행정고시) PSAT 상황판단 나책형 19-20번 해설

by Topgemstone
728x90

다음 글을 읽고 물음에 답하시오.

 

  ○○프로그램에서 하나의 명령문은 cards, input 등의 중심어로 시작하고 반드시 세미콜론(;)으로 끝난다. 중심어에는 명령문의 지시 내용이 담겨있는데, cards는 그 다음 줄부터 input 명령문에서 이용할 일종의 자료집합인 레코드(record)가 한 줄씩 나타남을 의미한다. <프로그램 1>에서 레코드는 ‘701102’‘720508’이다.
  input은 레코드를 이용하여 변수에 수를 저장하는 것을 의미한다. 첫 번째 input은 첫 번째 레코드를 이용하여 명령을 수행하고, 그 다음부터의 input은 차례대로 그 다음 레코드를 이용한다. 예를 들어 <프로그램 1>에서 첫 번째 input 명령문의 변수 a에는 첫 번째 레코드 ‘701102’13번째 위치에 있는 수인 ‘701’을 저장하고, 변수 b에는 같은 레코드의 56번째 위치에 있는 수인 ‘02’에서 앞의 ‘0’을 빼고 ‘2’를 저장한다. 두 번째 input 명령문의 변수 c에는 두 번째 레코드 ‘720508’12번째 위치에 있는 수인 ‘72’를 저장한다. <프로그램 2>와 같이 만약 input 명령문이 하나이고 여러 개의 레코드가 있을 경우 모든 레코드를 차례대로 이용한다. 한편 input 명령문이 다수인 경우, 어느 input 명령문에 @가 있으면 바로 다음 input 명령문은 @가 있는 input 명령문과 같은 레코드를 이용한다. 이후 input 명령문부터는 차례대로 그 다음 레코드를 이용한다.
  printinput 명령문에서 변수에 저장한 수를 결과로 출력하라는 의미이다. 다음은 각 프로그램에서 변수 a, b, c저장한 수를 출력한 <결과>이다.

 

문제

 

윗글을 근거로 판단할 때, <보기>에서 옳은 것만을 모두 고르면?

 

<보 기>

. input 명령문은 레코드에서 위치를 지정하여 변수에 수를 저장할 수 있다.
. 두 개의 input 명령문은 같은 레코드를 이용하여 변수에 수를 저장할 수 없다.
. 하나의 input 명령문이 다수의 레코드를 이용하여 변수에 수를 저장할 수 있다.

,

,

, ,

 

해설
▷ 정답  ④

ㄱ. (O) 문단2)

<프로그램1>의 예시에서 볼 수 있듯(ex. a 1-3은 레코드의 1~3번째 위치를 지정함) input 명령문에서 어떤 레코드를 이용하여 변수에 수를 저장하는 것 외에도 1~3번째 위치 등 위치를 지정할 수 있다는 것을 알 수 있다.

 

ㄴ. (X) 문단2)

input 명령문이 다수인 경우, 어느 한 input 명령문에 @가 있으면 바로 다음 input 명령문은 @가 있는 input 명령문과 같은 레코드를 이용한다고 하여 두 개의 input 명령문으로 같은 레코드를 이용할 수 있음을 알 수 있다.

 

ㄷ. (O) 문단2)

<프로그램 2>와 같이 만약 input 명령문이 하나이고 여러 개의 레코드가 있을 경우 모든 레코드를 차례대로 이용한다고 하여 하나의 input 명령문이 다수의 레코드를 이용하여 변수에 수를 저장할 수 있음을 알 수 있다.

 


 

문제

 

윗글을 근거로 판단할 때, 다음 <프로그램><결과>로 출력된 수를 모두 더하면?

 

<프로그램>

cards
020824
701102
720508
;
input a 16 b 34;
input c 56@;
input d 34;
input e 35;
print;

20895

20911

20917

20965

20977

 

해설
▷ 정답  ①

글의 내용에 따르면, input a 1-6 b 3-4; 는 첫 번째 레코드를 이용한다.
a에는 첫 번째 레코드의 1~6자리를 입력한다. 이는 020824인데 맨 앞자리 0은 빼고 입력한다. 따라서 a = 20824이다.
b에는 첫 번째 레코드의 3~4자리를 입력한다. 이는 08인데 역시 앞의 0은 빼고 입력하므로, b = 8이다.

 

그다음으로 input c 5-6@;과 input d 3-4;는 두 번째 레코드를 이용한다.
이는 input c 5-6에 @가 있으면 바로 다음 input 명령문은 @가 있는 input 명령문과 같은 레코드를 이용해야 하고, 바로 다음 input 명령문이 input d 3-4;이기 때문이다.
c에는 두 번째 레코드의 5~6번째 자리를 입력하므로, c = 2이고(마찬가지로 앞의 0 생략), d에는 두 번째 레코드의 3~4번째 자리를 입력하므로, d = 11이다.

 

마지막으로 input e 3-5;은 세 번째 레코드를 이용한다.
e는 세 번째 레코드의 3~5번째 자리를 입력하므로, e = 50이다(마찬가지로 앞의 0 생략).
구한 결과를 모두 더하면, a+b+c+d+e = 20824+8+2+11+50 = 20895이다.

반응형

댓글