본문 바로가기
카테고리 없음

2020 정보처리기사 실기 4회 프로그래밍 문제 해설

by picker_life 2024. 3. 26.
반응형

2020 정보처리기사 실기 4회 5번

문제

5. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. 1,2에 알맞는 값을 적으시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
class good {
    public static void main (String[] args) {
        int[]a = new int[8];
        int i=0int n=10;
        while (  1번  ) {
            a[i++= (  2번  );
            n /= 2;
        }
        for(i=7; i>=0; i--){
         System.out.print(a[i]);
        }
     }
  }
cs

 

 

출력값 : 00001010

정답

1. n > 0 or n >=1 

2. n%2

해설

1번에 들어가야 할 값은 while문이 돌아가게 할 수 있는 참인 값이 들어가야 합니다. 따라서 n값이 0보다 클 경우에 계속해서 실행이 되어야 함으로 n > 0 또는 n >= 1 이 들어 갈 수 있습니다. 

 

2번에 들어갈 값은 배열 a에 저장되는 값이 n을 2로 나눈 나머지값이여야 하기 때문에 n % 2 가 들어가게 됩니다.

2020 정보처리기사 실기 4회 6번

문제

6. 다음은 자바 소스 코드이다. 출력 결과를 보고 , 1,2에 알맞는 값을 적으시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
public class good {
    public static void main(String[] args) {
        int[][]a = new int[(1.)][(2.)];
        for(int i = 0; i <3; i++){
        for(int j=0; j < 5; j++){
        a[i][j] = j*3+(i+1);
            System.out.print(a[i][j]+"");
         }
         System.out.println();
       }
     }
   }  
cs
 

 

정답

출력값 

1 4 7 10 13

2 5 8 11 14

3 6 9 12 15 

해설

 

2020 정보처리기사 실기 4회 9번

문제

9. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.

 

1
2
3
4
5
6
7
lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
    for sub in lol:
       for item in sub:
            print(item, end = '')
          print()
cs
 

 

정답

[1,2,3]

7

123

45

6789

해설

 
 

이 파이썬 코드는 다차원 리스트 lol을 다루고 있습니다. 코드의 출력을 단계별로 살펴보겠습니다:

  1. print(lol[0])은 리스트 lol의 첫 번째 요소를 출력합니다. 첫 번째 요소는 [1, 2, 3]이므로 출력은 [1, 2, 3]입니다.
  2. print(lol[2][1])은 리스트 lol의 세 번째 요소(즉, [6, 7, 8, 9])의 두 번째 요소를 출력합니다. 따라서 출력은 7입니다.
  3. 이중 for 루프는 리스트 lol의 모든 하위 리스트를 순회하며, 각 하위 리스트의 요소를 같은 줄에 연속해서 출력합니다. 각 하위 리스트의 출력이 끝날 때마다 새 줄로 넘어갑니다.

이에 따른 출력값은 

123

45

6789

입니다.

위의 값과 합치면

[1,2,3]

7

123

45

6789

이러한 값이 출력됩니다.

2020 정보처리기사 실기 4회 18번

문제

18. 다음은 C언어 소스 코드이다. 출력값을 쓰시오.

 

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
void main(){
    char *= "KOREA";
    printf("%s\n" , p);
    printf("%s\n" , p+3);
    printf("%c\n" , *p);
    printf("%c\n" , *(p+3));
    printf("%c\n" , *p+2);
cs

 

 

 

정답

KOREA

EA

K

E

M

해설

  1. printf("%s\n" , p);는 문자열 "KOREA" 전체를 출력합니다.
  2. printf("%s\n" , p+3);는 포인터 p가 가리키는 문자열의 네 번째 문자('E')로부터 시작하는 문자열을 출력합니다. 따라서 "EA"가 출력됩니다.
  3. printf("%c\n" , *p);는 포인터 p가 가리키는 첫 번째 문자, 즉 'K'를 출력합니다.
  4. printf("%c\n" , *(p+3));는 포인터 p가 가리키는 문자열의 네 번째 문자, 즉 'E'를 출력합니다.
  5. printf("%c\n" , *p+2);는 포인터 p가 가리키는 첫 번째 문자 'K'의 ASCII 값에 2를 더한 결과입니다. 'K'의 ASCII 값은 75이므로, 75 + 2 = 77이 되고, 이는 ASCII 테이블에서 'M'에 해당합니다.

 

2020 정보처리기사 실기 4회 19번

문제

19. 다음은 자바 소스 코드이다. 출력 결과를 쓰시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class parent{
    public int compute(int num){
        if(num <=1return num;
        return compute(num-1+ compute(num-2);
    }
 }
 
 class Child extends parent {
     public int compute(int num){
        if(num<=1return num;
            return compute(num-1+ compute(num-3);
        }
   }
   
  class good{
      public static void main (String[] args){
    parent obj = new Child();
    System.out.print(obj.compute(4));
   }
 }
cs
 

 

정답

1

해설

 

이 코드는 자바에서 메서드 오버라이딩의 전형적인 예를 보여줍니다. 여기서 자식 클래스가 부모 클래스의 메서드를 오버라이드합니다. 또한 이 예시는 부모 클래스 참조로 자식 클래스 인스턴스를 참조하는 다형성의 경우도 보여줍니다. 예제에서 Child 클래스의 compute 메서드가 Parent 클래스의 compute 메서드를 오버라이드합니다.

parent obj = new Child();를 통해 Child 클래스의 인스턴스가 생성되고 obj 참조 변수를 통해 관리됩니다. obj.compute(4)가 호출될 때, Child 클래스에 오버라이드된 compute 메서드가 실행됩니다.

자식 클래스의 compute 메서드 로직에 따라 계산 과정은 다음과 같습니다:

  1. compute(4)는 compute(3) + compute(1)을 호출합니다.
  2. compute(3)은 다시 compute(2) + compute(0)을 호출합니다.
  3. compute(2)는 compute(1) + compute(-1)을 호출합니다.
    • compute(1)은 1을 반환합니다.
    • compute(-1)은 조건 num <= 1에 의해 -1을 반환합니다.
    • 따라서, compute(2)는 1 + (-1) = 0을 반환합니다.
  4. compute(0)은 조건 num <= 1에 의해 0을 반환합니다.
    • 따라서, compute(3)은 0 + 0 = 0을 반환합니다.
  5. 마지막으로, compute(1)은 1을 반환합니다.

결과적으로, compute(4)는 0 + 1 = 1을 최종 결과로 반환합니다.

따라서 출력 결과는 1입니다.