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

2023 정보처리기사 실기 1회 프로그래밍 문제 해설(9번, 14번, 15번)

by picker_life 2024. 3. 11.
반응형

2023 정보처리기사 실기 1회 9번

 

문제

9. 다음 아래 코드에서 이진수를 십진수로 변환하는 코드에 대해 괄호 (a) (b)의 적합한 답을 작성하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
 
int main() {
 
    int input = 101110;
    int di = 1;
    int sum = 0;
 
    while (1) {
 
        if (input == 0break
        else {
 
          sum = sum + (input (a)(b)) * di;
             di = di * 2;
             input = input / 10;
 
        }
    }
 
    printf("%d", sum);
 
    return 0;
}
 
cs

 

정답

1. (a) %  ,(b) 10 or 5 or 2
2. (a) &  ,(b) 1

(1번, 2번 둘 다 정답)

해설

  1. while 루프는 input이 0이 될 때까지 계속 실행된다.
  2. if (input == 0) break;는 input이 0이 되면 루프를 종료시킨다.
  3. sum = sum + (input & 1) * di;: 이는 현재 input의 가장 낮은 자리수(2진수로)를 추출하여 그 값에 di를 곱한 후, 이를 sum에 더한다. 여기서 input & 1은 input의 마지막 비트를 추출한다.
  4. di = di * 2;: 이진수의 각 자리가 2의 거듭제곱을 나타내기 때문에, 다음 자리수로 넘어갈 때마다 di 값을 2배로 증가시킨다.
  5. input = input / 10;: 이진수를 십진법으로 표현된 input에서 마지막 자리를 제거하여 다음 자리수를 준비한다.

1번 정답 :

10, 5, 2로 나눈 값의 나머지를 통해 2진수 계산이 가능한 상태인지 확인하는 방식.

 

2번 정답 : 

비트연산자중 AND연산을 사용하여 INPUT의 가장 낮은 비트가 0인지 1인지 판단하는 방식

 

2023 정보처리기사 실기 1회 14번

 

문제

14. 다음 코드에서 괄호안에 알맞는 값을 변수명으로 작성하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Sort {
 
    public static void swap(int[] arr, int idx1, int idx2){
        int temp = arr[idx1];
        arr[idx1] = arr[idx2];
        arr[( 1 )] = temp;
    }
 
    public static void Usort(int[] array, int length){
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    swap(array, j, j + 1);
                }
            }
        }
    }
 
    public static void main(String[] args) {
        int[] item = new int[] { 538127 };
        int nx = 6;   
        Usort(item, ( 2 ));
 
        for (int data : item) {
            System.out.print(data + " ");
        }
    }
 
}
 
cs

 

출력 값 : 1 2 3 5 7 8

정답

idx2, nx

 

해설

1번 괄호: 이 부분은 swap 함수 내에서 arr[idx2]를 temp로 설정해야 한다. 그러나 현재 코드에서는 arr[(1)] = temp;라고 되어 있으며, 올바른 인덱스인 idx2를 참조해야 한다. 따라서 1번 괄호에는 idx2가 들어간다.

2번 괄호: 이 부분은 main 메소드 내에서 Usort 함수를 호출할 때 사용하는 배열의 길이이다. 배열 item의 길이는 nx로 정의되어 있으며, 이 값은 6이다. 따라서 2번 괄호에는 nx가 들어가야 한다.

 

 

2023 정보처리기사 실기 1회 15번

 

문제

15. 다음 파이썬 코드의 알맞는 출력값을 작성하시오.

 

1
2
3
4
5
6
a = {'한국', '중국', '일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update({'홍콩', '한국', '태국'})
print(a)
cs
 

정답

{'한국', '중국', '베트남', '홍콩', '태국'}

 

해설

  1. a = {'한국', '중국', '일본'}: 집합 a가 '한국', '중국', '일본'을 요소로 가지게 된다.
  2. a.add('베트남'): '베트남'이 집합 a에 추가된다.
  3. a.add('중국'): '중국'은 이미 집합 a에 존재하기 때문에, 이 명령은 아무런 변화를 일으키지 않는다.
  4. a.remove('일본'): '일본'이 집합 a에서 제거된다.
  5. a.update({'홍콩', '한국', '태국'}): 집합 a에 '홍콩', '한국', '태국'이 추가된다. '한국'은 이미 존재하기 때문에 추가되지 않고, '홍콩'과 '태국'은 새로 추가된다.

따라서 최종적으로 print(a)를 실행하면 집합 a는 {'한국', '중국', '베트남', '홍콩', '태국'}의 요소를 포함하게 된다.