인사말

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

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

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

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

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

 

 

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

 

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

public class Gisafirst {
    static void func(String[] m) {
        int sameCount = 0;
        int differentCount = 0;
       
        for (int i = 1; i < m.length; i++) {
            if (m[i - 1].equalsIgnoreCase(m[i])) {
                System.out.print("O");
                sameCount++;
            } else {
                System.out.print("N");
                differentCount++;
            }
        }
       
        System.out.println("\nSame Count: " + sameCount);
        System.out.println("Different Count: " + differentCount);
       
        System.out.print("Strings: ");
        for (String mo : m) {
            System.out.print(mo + " ");
        }
    }

    public static void main(String[] args) {
        String[] m = { "A", "a", "B", "C", "a", "A" };

        func(m);
    }
}
정답

ONNNO
Same Count: 2
Different Count: 3
Strings: A a B C a A

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

public class ReverseAndSumDifference {
    static void test(int[] ls) {
        for (int i = 0; i < ls.length / 2; i++) {
            int temp = ls[i];
            ls[i] = ls[ls.length - i - 1];
            ls[ls.length - i - 1] = temp;
        }
    }

    public static void main(String[] args) {
        int[] ls = {1, 2, 3, 4, 5, 6};
        test(ls);

        int evenSum = 0;
        int oddSum = 0;

        for (int i = 0; i < ls.length; i++) {
            if (i % 2 == 0) {
                evenSum += ls[i];
            } else {
                oddSum += ls[i];
            }
        }

        System.out.println(evenSum - oddSum);
    }
}
정답

3

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

public class IncreaseExample {
    static int increase() {
        int x = 0;
        x += 2;
        return x;
    }

    public static void main(String[] args) {
        int x = 0;
        int sum = 0;
       
        for (int i = 0; i < 4; i++) {
            x++;
            sum += increase();
        }
       
        System.out.println(sum);
    }
}
정답

8

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

class Node {
    int value;
    Node next;

    Node(int value) {
        this.value = value;
        this.next = null;
    }
}

public class SwapNodes {
    static void swap(Node node) {
        while (node != null && node.next != null) {
            int t = node.value;
            node.value = node.next.value;
            node.next.value = t;

            node = node.next.next;
        }
    }

    public static void main(String[] args) {
        Node n1 = new Node(1);
        Node n2 = new Node(2);
        Node n3 = new Node(3);

        n1.next = n3;
        n3.next = n2;

        swap(n1);

        Node c = n1;
        while (c != null) {
            System.out.print(c.value + " ");
            c = c.next;
        }
    }
}
정답

3 1 2

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

public class TypeTest {
    static int test(Object v) {
        if (v instanceof String) {
            return ((String) v).length();
        } else if (v instanceof Integer) {
            return 101;
        } else if (v instanceof Double) {
            return 101;
        } else {
            return 20;
        }
    }

    public static void main(String[] args) {
        String a = "100.0";
        Double b = 100.0;
        Double[] c = {100.0, 200.0};
        System.out.println(test(a) + test(b) + test(c));
    }
}
정답

126

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

class CustomExceptionA extends Exception {}
class CustomExceptionB extends Exception {}

public class Gisafirst {
    public static void main(String[] args) {
        int sum = 0;
        try {
            func();
        } catch (NullPointerException e) {
            sum += 1;
        } catch (CustomExceptionA e) {
            sum += 5;
        } catch (CustomExceptionB e) {
            sum += 15;
        } catch (Exception e) {
            sum += 10;
        } finally {
            sum += 100;
        }
        System.out.print(sum);
    }

    static void func() throws Exception {
        int scenario = (int) (Math.random() * 3);
        if (scenario == 0) {
            throw new NullPointerException();
        } else if (scenario == 1) {
            throw new CustomExceptionA();
        } else {
            throw new CustomExceptionB();
        }
    }
}
정답

105

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

interface Calculable {
    int calculate();
}

abstract class B implements Calculable {
    int x = 3;

    abstract int getX();
   
    public int calculate() {
        return getX() + x;
    }
}


class A extends B {
    int x = 7;

    int getX() {
        return x * 3;
    }

    int additionalCalculation() {
        return x + 5;
    }
}


class C extends B {
    int x = 5;

    int getX() {
        return x * 4;
    }

    int anotherCalculation() {
        return x * 2 - 1;
    }
}


public class Gisafirst {
    public static void main(String[] args) {
        B b1 = new A();
        B b2 = new C();
       
        System.out.print(b1.calculate() + " ");
        System.out.print(b2.calculate() + " ");
       
        A a = new A();
        C c = new C();
       
        System.out.print(a.additionalCalculation() + " ");
        System.out.print(c.anotherCalculation());
    }
}
정답

24 23 12 9

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

class Printer {
    void print(Integer a) {
        System.out.print("A" + a + " ");
    }
   
    void print(Object a) {
        System.out.print("B" + a + " ");
    }
   
    void print(Number a) {
        System.out.print("C" + a + " ");
    }
   
    void print(String a) {
        System.out.print("D" + a + " ");
    }
}

public class Gisafirst {
    public static void main(String[] args) {
        new Container<>(0).print();
        new Container<>("Hello").print();
        new Container<>(3.14).print();
    }
   
    public static class Container<T> {
        T value;
       
        public Container(T t) {
            value = t;
        }
       
        public void print() {
            try {
                new Printer().print(value);
            } catch (Exception e) {
                System.out.print("Error: " + e.getMessage());
            }
        }
    }
}
정답

B0 BHello B3.14

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

public class Main {
    static void func1(int[][] arr, int size) {
        for (int i = 0; i < size; i++) {
            arr[i][0] = (arr[i][0] + i) % size;
        }
    }

    static void func2(int[] num, int[] arr) {
        num[0] = arr[num[0] % 4];
    }

    public static void main(String[] args) {
        int[] arr = {3, 1, 4, 1, 5};
        int[][] pp = new int[5][1];
        for (int i = 0; i < arr.length; i++) {
            pp[i][0] = arr[i];
        }
       
        int[] num = {6};
        func1(pp, 5);
        func2(num, arr);
       
        System.out.print(num[0]);
    }
}
정답

4

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

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

class SimpleCalculator {
    public double add(double a, double b) {
        return a + b;
    }

    public double subtract(double a, double b) {
        return a - b;
    }

    public double multiply(double a, double b) {
        return a * b;
    }

    public double divide(double a, double b) throws DivisionByZeroException {
        if (b == 0) {
            throw new DivisionByZeroException("Cannot divide by zero.");
        }
        return a / b;
    }
}

public class CalculatorApp {
    public static void main(String[] args) {
        SimpleCalculator calculator = new SimpleCalculator();
       
        double num1 = 10.0;
        double num2 = 0.0;
       
        try {
            double result = calculator.add(num1, num2);
            System.out.println("Addition: " + result);
           
            result = calculator.subtract(num1, num2);
            System.out.println("Subtraction: " + result);
           
            result = calculator.multiply(num1, num2);
            System.out.println("Multiplication: " + result);
           
            result = calculator.divide(num1, num2);
            System.out.println("Division: " + result);
        } catch (DivisionByZeroException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
정답

Addition: 10.0
Subtraction: 10.0
Multiplication: 0.0
Error: Cannot divide by zero.