정보처리기사2026년 4월 12일· 8 min read

정처기 실기 코드 문제 푸는 법 (C·Java·Python)

정보처리기사 실기에서 배점이 가장 높은 코드 출력 문제를 어떻게 풀어야 하는지, 언어별 자주 나오는 패턴과 실전 접근법을 정리합니다.

안녕하세요. 문어입니다 🐙


코드 문제를 못 풀면 합격이 어렵습니다

정처기 실기 20문항 중 코드 출력 문제는 보통 4–6문제, 배점으로 치면 30–40점 정도를 차지해요. 합격 기준이 60점인데, 여기서 대부분을 날리면 나머지 암기 문제를 다 맞춰도 턱없이 부족합니다.

반대로 말하면, 코드 문제만 안정적으로 맞추면 합격 확률이 확 올라간다는 뜻이기도 해요. 암기 과목은 운이 작용하지만, 코드는 패턴을 익히면 꽤 안정적으로 점수가 나오거든요.


어떤 언어가 나오나

시험에서는 C, Java, Python 세 언어가 나와요. 문제마다 언어가 다르고, 선택할 수 없습니다. 그래서 세 언어 모두 읽을 줄은 알아야 해요.

다만 "코딩을 할 줄 알아야 한다"는 게 아니에요. 주어진 코드의 실행 결과를 적는 것이 전부입니다. 코드를 직접 작성하는 문제는 거의 안 나와요.

언어출제 빈도특징
C매회 1–2문제포인터, 배열, 구조체 위주. 포인터가 어려우면 시간을 많이 잡아먹음
Java매회 1–2문제클래스, 상속, 오버라이딩 위주. 객체지향 개념이 섞여 나옴
Python매회 1–2문제리스트, 슬라이싱, 딕셔너리 위주. 상대적으로 읽기 쉬움

문제 유형별 접근법

유형 1: 변수 추적 (가장 기본)

a = 5
b = a + 3
a = b - 1
print(a, b)

이런 유형은 줄 단위로 변수 값을 옆에 적어가면서 따라가면 돼요.

실전 팁:

  • 시험지 여백에 변수표를 만들어요. a=? b=?를 줄마다 갱신
  • 대입 순서를 헷갈리면 안 됩니다. a = b는 b의 값을 a에 넣는 거예요
  • ++, -- 연산자(C/Java)는 전위/후위 차이를 꼭 구분하세요

유형 2: 반복문 추적

int s = 0;
for(int i = 1; i <= 5; i++) {
    s += i;
}
printf("%d", s);

반복문은 표를 그리는 게 가장 확실해요.

반복is
1회11
2회23
3회36
4회410
5회515

답: 15

시험에서는 while, do-while, 중첩 for도 나와요. 중첩 반복문이 나오면 바깥 루프 한 바퀴마다 안쪽 루프를 전부 돌려야 하니까, 표를 크게 그려야 합니다.

유형 3: 함수 호출 + 재귀

def f(n):
    if n <= 1:
        return 1
    return n * f(n - 1)
print(f(4))

재귀는 호출 스택을 직접 써보는 게 좋아요.

f(4) = 4 * f(3)
f(3) = 3 * f(2)
f(2) = 2 * f(1)
f(1) = 1
→ f(2) = 2, f(3) = 6, f(4) = 24

답: 24

재귀 문제에서 자주 실수하는 건 종료 조건을 놓치는 것이에요. if n <= 1이면 1을 반환한다는 걸 먼저 확인하고 역추적하세요.

유형 4: 배열/리스트 조작

a = [1, 2, 3, 4, 5]
print(a[1:4])
print(a[::-1])

Python 슬라이싱은 거의 매회 나와요. 핵심만 정리하면:

  • a[1:4] → 인덱스 1부터 3까지 (4는 미포함). [2, 3, 4]
  • a[::-1] → 역순. [5, 4, 3, 2, 1]
  • a[-1] → 마지막 요소. 5

유형 5: C 포인터 (가장 어려움)

int a = 10;
int *p = &a;
*p = 20;
printf("%d", a);

답: 20

포인터는 "주소를 저장하는 변수"라고 생각하면 돼요.

  • &a → a의 주소
  • *p → p가 가리키는 곳의 값
  • *p = 20 → p가 가리키는 곳(=a)에 20을 넣음

포인터 문제가 어렵게 느껴지면, 화살표 그림을 그려보세요. p → a처럼 누가 누구를 가리키는지 시각화하면 훨씬 수월합니다.


언어별 자주 나오는 함정

C

  • printf("%d", 10/3)3 (정수 나눗셈, 소수점 버림)
  • char c = 'A'; printf("%d", c);65 (ASCII 값)
  • int a[3] = {1, 2, 3}; printf("%d", *(a+1));2 (포인터 연산)

Java

  • String s = "abc"; System.out.println(s.length());3
  • 상속에서 super.method() vs this.method() 구분
  • int a = 5; System.out.println(a++);5 (후위 증가: 출력 먼저, 증가는 후)

Python

  • print(10 // 3)3 (정수 나눗셈)
  • print(10 % 3)1 (나머지)
  • print("abc" * 2)abcabc (문자열 반복)
  • 리스트 appendextend 차이: append([4,5])[1,2,3,[4,5]], extend([4,5])[1,2,3,4,5]

실전에서 시간 관리

코드 문제는 한 문제당 5–7분이 적당해요. 20문항에 150분이니까, 코드 6문제에 40분 정도 쓰고 나머지 암기 문제에 시간을 남겨야 합니다.

막히는 코드 문제가 있으면:

  1. 3분 안에 감이 안 잡히면 일단 넘기세요
  2. 암기 문제를 먼저 다 풀고 돌아오세요
  3. 돌아와서 차분히 변수표를 그리면 의외로 풀리는 경우가 많아요
코드 문제에서 가장 흔한 실수는 "머릿속으로만 돌리다가 한 줄 빼먹는 것"입니다. 반드시 종이에 적으면서 풀어요.

공부 순서 추천

  1. Python 먼저 — 문법이 가장 직관적이라 코드 읽기에 익숙해지기 좋아요
  2. Java — 클래스/상속 개념만 잡으면 출력 추적은 어렵지 않아요
  3. C 포인터 — 가장 어려우니 마지막에 집중 투자

세 언어를 "코딩"할 필요는 없어요. 읽고 실행 결과를 추적하는 연습만 하면 됩니다. 기출 코드 문제를 20–30문제 정도 손으로 풀어보면 패턴이 보이기 시작해요.

직접 문제를 풀어보세요

매번 새로운 모의고사와 무한 풀이 모드로 실전 감각을 키울 수 있습니다.