인사말

안녕하세요. 이 글을 읽고 계신다면 정보처리기사 또는 정보처리산업기사 수험생이실 것 같습니다.

여러 좋은 서적에서 이론을 잘 설명하고 있지만, 코딩 문제의 경우 같은 문제를 여러 번 풀다 보면 답이 머리에 기억되어 새로운 문제가 필요하게 되는 순간이 옵니다.

그럴 때 더 많은 문제를 풀어보고 도움이 되게 하고자 여러 C언어, JAVA, Python 문제를 변형 시키고 직접 컴파일하여 답을 확인하면서 문제를 만들었습니다.

정보처리 실기를 공부하시는 모든 수험생 여러분, 목표하는 모든 것이 이루어지는 그날까지 응원하겠습니다. 화이팅!

목표를 향해 열심히 노력하시고, 좋은 결과 있기를 기원합니다!

 

 

정보처리기사 실기 언어 코딩 기출변형 문제

 

1. 출력 값을 작성하시오.

class Base {
    int calculate(int num) {
        if (num <= 1) return num;
        return calculate(num - 1) + calculate(num - 2);
    }
}

class Derived extends Base {
    int calculate(int num) {
        if (num <= 1) return num;
        return calculate(num - 2) + calculate(num - 3);
    }
}

class Main {
    public static void main(String[] args) {
        Base obj = new Derived();
        System.out.print(obj.calculate(11));
    }
}
정답

2

2. 출력 값을 작성하시오.

class BaseClass {
    int value;

    public BaseClass(int value) {
        this.value = value;
    }

    int getValue() {
        return value;
    }
}

class DerivedClass extends BaseClass {
    int additionalValue;

    public DerivedClass(int value) {
        super(2 * value);
        this.additionalValue = value;
    }

    int getValue() {
        return additionalValue;
    }

    int getBaseValue() {
        return super.getValue();
    }
}

class MainApp {
    public static void main(String[] args) {
        BaseClass base = new DerivedClass(7);
        System.out.println(base.value + ", " + base.getValue());

        DerivedClass derived = new DerivedClass(7);
        System.out.println(derived.value + ", " + derived.getValue() + ", " + derived.getBaseValue());
    }
}
정답

14, 7
14, 7, 14

3. 출력 값을 작성하시오.

class Individual {
    String name;

    public Individual(String n) {
        name = n;
    }

    public void identify() {
        System.out.println(name + "입니다.");
    }
}

class Learner extends Individual {
    String school;
    String degree;

    public Learner(String n, String s, String d) {
        super(n);
        school = s;
        degree = d;
    }

    public void identify() {
        System.out.println(degree + "를 가지고 있는 " + school + "의 " + name + "입니다.");
    }
}

class Society {
    public static void main(String[] args) {
        Individual obj = new Learner("초승달", "반달 고등학교", "학사");
        obj.identify();
    }
}
정답

학사를 가지고 있는 반달 고등학교의 초승달입니다.

4. 출력 값을 작성하시오.

class Alpha {
    public int value = 3;

    public void incrementValue(int i) {
        value += i;
        System.out.println("Alpha: " + value + " ");
    }

    public void addTen() {
        value += 10;
        System.out.println("Alpha: " + value + " ");
    }
}

class Beta extends Alpha {
    public int value = 8;

    public void incrementValue(double i) {
        value += (int) i;
        System.out.println("Beta: " + value + " ");
    }

    public void addTen() {
        value += 10;
        System.out.println("Beta: " + value + " ");
    }
}

class Demo {
    public static void main(String[] args) {
        Alpha alpha = new Beta();
        alpha.incrementValue(1);
        alpha.addTen();
    }
}
정답

Alpha: 4
Beta: 18

5. 출력 값을 작성하시오.

class SuperClass {
    int operation1(int a, int b) {
        return (a + b);
    }

    int operation2(int a, int b) {
        return (a - b);
    }

    int operation3(int a, int b) {
        return (a * b);
    }
}

class SubClass extends SuperClass {
    int operation1(int a, int b) {
        return (a % b);
    }

    double operation2(double a, double b) {
        return (a * b);
    }

    int operation3(int a, int b) {
        return (a / b);
    }

    int operation2(int a, int b) {
        return (a + b + 10);
    }

    public static void main(String[] args) {
        SuperClass superClassInstance = new SubClass();
        System.out.println(superClassInstance.operation1(5, 2));
        System.out.println(superClassInstance.operation2(5, 2));
        System.out.println(superClassInstance.operation3(5, 2));
    }
}
정답

1
17
2

6. 출력 값을 작성하시오.

interface Constant {
    int FACTOR = 2;
}

interface Calculable {
    int calculate(int input);
}

class Multiplier implements Constant, Calculable {
    int value;

    Multiplier(int input) {
        value = input * FACTOR;
    }

    public int calculate(int input) {
        return value * input;
    }

    int getValue() {
        return value;
    }
}

class ComplexTest {
    public static void main(String[] args) {
        int factor = 3;
        Multiplier m1 = new Multiplier(1);
        System.out.println(m1.getValue());
        System.out.println(m1.calculate(factor));
    }
}
정답

2
6

7. 출력 값을 작성하시오.

interface Incrementable {
    void increment();
    void decrement();
}

interface Resettable {
    void reset();
}

class Counter implements Incrementable, Resettable {
    int value = 0;

    public void increment() {
        value++;
    }

    public void decrement() {
        value--;
    }

    public void reset() {
        value = 0;
    }

    void printValue() {
        System.out.println("Counter value: " + value);
    }
}

class AdvancedCounter extends Counter {
    int step;

    AdvancedCounter(int step) {
        this.step = step;
    }

    public void increment() {
        value += step;
    }

    public void decrement() {
        value -= step;
    }

    public void printValue() {
        System.out.println("Advanced Counter value: " + value);
    }

    public static void main(String[] args) {
        AdvancedCounter ac = new AdvancedCounter(5);
        Incrementable i = ac;
        Resettable r = ac;
       
        i.increment();
        i.increment();
        ac.printValue();

        i.decrement();
        ac.printValue();

        r.reset();
        ac.printValue();
    }
}
정답

Advanced Counter value: 10
Advanced Counter value: 5
Advanced Counter value: 0

8. 출력 값을 작성하시오.

class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

class AdvancedExceptionTest {
    AdvancedExceptionTest() {
        try {
            method1();
            System.out.println("X");
        } catch (CustomException e) {
            System.out.println("Y");
        } catch (Exception e) {
            System.out.println("Z");
        } finally {
            System.out.println("W");
        }
        System.out.println("V");
    }

    void method1() throws CustomException {
        try {
            method2();
            System.out.println("A");
        } catch (CustomException e) {
            System.out.println("B");
            throw e;
        } finally {
            System.out.println("C");
        }
        System.out.println("D");
    }

    void method2() throws CustomException {
        try {
            method3();
            System.out.println("E");
        } catch (Exception e) {
            System.out.println("F");
            throw new CustomException("Custom exception in method2");
        } finally {
            System.out.println("G");
        }
    }

    void method3() throws Exception {
        throw new Exception("Exception in method3");
    }

    public static void main(String[] args) {
        new AdvancedExceptionTest();
    }
}
정답

F
G
B
C
Y
W
V

9. 출력 값을 작성하시오.

class TestException {
    public static void main(String[] args) {
        try {
            System.out.println("문장A");
            foo();
            System.out.println("문장B");
        } catch (Exception e) {
            System.out.println("문장C");
        }
        System.out.println("문장D");
    }

    public static void foo() throws Exception {
        try {
            System.out.println("문장E");
            throw new Exception();
        } catch (Exception e) {
            System.out.println("문장F");
            throw e;
        } finally {
            System.out.println("문장G");
        }
    }
}
정답

문장A
문장E
문장F
문장G
문장C
문장D

10. 출력 값을 작성하시오.

class Test {
    public static void main(String[] args) {
        int ar[] = {10, 20, 30, 40, 50};
        int sum = 0, a = 100, b = 0;
        try {
            for(int i = 0; i < ar.length; i++) {
                sum += ar[i];
            }
            System.out.println(sum);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Array IndexOutOf Bounds Exception");
        }
        try {
            float z = a / b;
            System.out.println(z);
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException");
        }
    }
}
정답

150
ArithmeticException