Tech Trail

[정보처리기사 실기] 2020년 1회, 2회 기출 코드 해설 (C언어, Java, Python) 본문

Learning/정보처리기사

[정보처리기사 실기] 2020년 1회, 2회 기출 코드 해설 (C언어, Java, Python)

_밍지_ 2023. 11. 10. 11:31
728x90
반응형
SMALL

2020년 1회 12번 문제

다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.

 

#include <stdio.h>

void main() {
    int i, j;
    int temp;
    int a[5] = {75, 95, 85, 100, 50};

    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4 - i; j++) {
            if (a[j] > a[j + 1]) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }

    for (i = 0; i < 5; i++) {
        printf("%d ", a[i]);
    }
}
 

이 코드는 버블 정렬(Bubble Sort) 알고리즘을 사용하여 배열 a의 요소들을 오름차순으로 정렬하는 문제입니다.

(1) 배열 a를 선언하고 초기화합니다. 배열의 내용은 {75, 95, 85, 100, 50}입니다.

(2) 바깥쪽 for 루프에서 변수 i를 사용하여 정렬을 수행합니다. i는 0부터 3까지 총 4번 반복합니다.

(3) 안쪽 for 루프에서 변수 j를 사용하여 인접한 두 요소를 비교하고 필요한 경우 교환합니다. j는 0부터 4 - i까지 반복하며, 이는 각 반복에서 가장 큰 요소가 배열의 끝으로 이동하기 때문입니다.

(4) if (a[j] > a[j + 1]) 조건은 현재 요소 a[j]가 다음 요소 a[j + 1]보다 큰 경우를 검사합니다. 만약 크다면 두 요소를 교환하여 정렬 순서를 조정합니다.

(5) 정렬이 완료되면 배열 a는 오름차순으로 정렬됩니다.

(6) 마지막으로 정렬된 배열 a를 출력합니다. 결과는 "50 75 85 95 100"이 됩니다.

 

50 75 85 95 100

 

 

2020년 1회 13번 문제

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

 

public class Soojebi {
    public static void main(String[] args) {
        int i; // 정수형 변수 i를 선언합니다.
        int a[] = {0, 1, 2, 3}; // 크기가 4인 정수 배열 a를 선언하고 초기화합니다.

        for (i = 0; i < 4; i++) { // i를 0부터 3까지 증가시키는 반복문을 시작합니다.
            System.out.print(a[i] + " "); // 배열 a의 요소를 출력하고 공백을 추가합니다.
        }
    }
}

배열 a에 저장된 요소를 반복문을 사용하여 출력하는 프로그램입니다.

(a[i] + " " 에 " " 공백 추가 주의!)

0 1 2 3

배열 a에 저장된 값을 반복하여 출력하며, 출력 결과는 "0 1 2 3"입니다.

 

2020년 1회 14번 문제

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

 

public class Soojebi {
    public static void main(String[] args) {
        int i = 3; // 정수형 변수 i를 3으로 초기화합니다.
        int k = 1; // 정수형 변수 k를 1로 초기화합니다.

        switch (i) { // 변수 i의 값을 기반으로한 switch 문을 시작합니다.
            case 0:
            case 1:
            case 2:
            case 3:
                k = 0; // i가 0, 1, 2, 3 중 하나일 때 k를 0으로 설정합니다.
            case 4:
                k += 3; // i가 4일 때 k에 3을 더합니다.
            case 5:
                k -= 10; // i가 5일 때 k에서 10을 뺍니다.
            default:
                k--; // 위의 case 중 어떤 경우에도 해당하지 않을 때 k에서 1을 뺍니다.
        }

        System.out.print(k); // 최종적인 k의 값을 출력합니다.
    }
}
 

switch 문을 사용하여 변수 i의 값에 따라 변수 k를 변경하고, 그 결과를 출력하는 프로그램입니다.

(1) i의 초기값은 3이므로 switch 문은 case 3:에서 실행을 시작합니다.

(2) case 3:에서 k를 0으로 설정합니다.

(3) case 4:에서 k에 3을 더합니다. 따라서 k는 3이 됩니다.

(4) case 5:에서 k에서 10을 빼므로 k는 -7이 됩니다.

(5) default에서 k에서 1을 빼므로 k는 최종적으로 -8이 됩니다.

(6) 마지막으로 System.out.print(k)를 통해 -8이 출력됩니다.

 

-8
 

2020년 2회 2번 문제

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

 

a = {'일본', '중국', '한국'}  # 집합 a를 초기화합니다.

a.add('베트남')  # '베트남'을 집합 a에 추가합니다.
a.add('중국')  # '중국'을 집합 a에 추가합니다. (중복 값이므로 추가되지 않음)

a.remove('일본')  # '일본'을 집합 a에서 제거합니다.

a.update({'홍콩', '한국', '태국'})  # 집합 a에 여러 요소를 한꺼번에 추가합니다.

print(a)  # 최종적으로 집합 a를 출력합니다.
 

주어진 파이썬 코드는 집합(set) a를 조작하고 그 결과를 출력하는 문제입니다.

(1) 초기 상태에서 a 집합은 {'일본', '중국', '한국'}입니다.

(2) a.add('베트남')을 통해 '베트남'이 추가되면서 집합 a는 {'일본', '중국', '한국', '베트남'}이 됩니다.

(3) a.add('중국')을 호출해도 '중국'은 이미 집합에 있으므로 추가되지 않습니다.

(4) a.remove('일본')을 호출하여 '일본'을 제거하면 집합 a는 {'중국', '한국', '베트남'}이 됩니다.

(5) a.update({'홍콩', '한국', '태국'})을 통해 여러 요소를 한꺼번에 추가합니다.

이미 집합에 있는 '한국'은 중복으로 추가되지 않고, 나머지 요소인 '홍콩'과 '태국'이 추가됩니다.

(6) 마지막으로 print(a)를 통해 최종적인 집합 a를 출력합니다. 결과는 {'중국', '한국', '베트남', '홍콩', '태국'}입니다.

 

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

 

 

2020년 2회 5번 문제

다음은 자바 코드이다. 다음 빈칸에 들어갈 키워드를 쓰시오.

 

class Parent {
    public void show() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    public void show(){
        System.out.println("Child");
    }
}

public class Soojebi {
    public static void main(String[] args) {
        Parent pa = 빈칸 Child();
        pa.show(); 
    }
}
 

주어진 Java 코드에서 "빈칸"에 들어갈 내용은 new 키워드입니다.

parent pa = new Child();  // 빈칸에 "new" 키워드를 추가하여 Child 클래스의 객체를 생성합니다.
pa.show();  // Child 클래스의 show() 메서드가 호출됩니다.

이 코드는 Child 클래스의 객체를 Parent 클래스의 참조 변수 pa에 할당하고, 이후 pa.show()를 호출하면 Child 클래스의 show() 메서드가 실행됩니다.

이는 Java의 다형성(polymorphism) 개념에 따른 것으로, 하위 클래스의 객체를 상위 클래스의 참조 변수에 할당하고 호출하면 해당 하위 클래스의 메서드가 실행됩니다.

자바는 new 연산자를 이용해 객체를 선언하고

생성자를 호출한다.

자바 객체 생성 문법은 다음과 같다.

클래스 객체변수명 = new 생성자(매개변수);

 

2020년 2회 19번 문제

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

 

class A {
    private int a;
    public A(int a) {
        this.a = a;
    }
    public void display() {
        System.out.println("a=" + a);
    }
}

class B extends A {
    public B(int a) {
        super(a);  // 부모 클래스인 A 클래스의 생성자가 호출됩니다. 이때, 10이 A 클래스의 a 변수에 저장됩니다.
        super.display();  // 모 클래스인 A 클래스의 display() 메서드가 호출되고, "a=10"이 출력됩니다.
    }
}

public class Soojebi {
    public static void main(String[] args) {
        B obj = new B(10);  // B 클래스의 객체 obj를 생성할 때, B 클래스의 생성자가 호출됩니다.
    }
}
 

(1) class Aclass B를 정의합니다. 여기서 class A는 부모 클래스이고, class B는 자식 클래스입니다.

(2) class A 안에서는 private int a;로 정수형 변수 a를 선언하고, 생성자 메서드 public A(int a)를 정의합니다. 이 생성자 메서드는 a 값을 받아서 a 변수에 저장합니다.

또한, public void display() 메서드를 정의하여 a 값을 화면에 출력합니다.

(3) class Bclass A를 상속받습니다. 그리고 public B(int a) 생성자 메서드를 정의하는데, 이 메서드는 부모 클래스인 class A의 생성자를 호출하고 super.display();로 부모 클래스의 display() 메서드를 호출하여 a 값을 화면에 출력합니다.

(4) public class Soojebi 안에서는 public static void main(String[] args) 메서드를 정의하여 프로그램의 진입점을 설정합니다.

(5) B obj = new B(10); 코드에서 B 클래스의 객체 obj를 생성하고, 생성자에 10을 전달하여 B 클래스의 생성자를 호출합니다.

(6) B 클래스의 생성자에서 super(a);로 부모 클래스 A의 생성자를 호출하면서 10을 전달합니다.

그리고 super.display();로 부모 클래스 Adisplay() 메서드를 호출하여 화면에 "a=10"을 출력합니다.

 

a=10

728x90
반응형
LIST