![]()
시험장에서 나오는 순간, 대부분의 수험생들이 하는 말이 뭘까? "아, 이거 아까 봤는데..."다. 정보처리기사 실기, 특히 최근 회차를 겪은 사람들은 더 공감할 거다.
문제 자체가 어려워졌다기보다는, 출제 방향이 확실히 바뀌었다는 느낌이 강하게 든다. 2024년 2회 시험을 치른 한 수강생의 후기를 보면 "파이썬이 어려워졌고, 재귀함수가 더 복잡해졌다"는 이야기가 나온다.실제로 복원된 문제들을 살펴보면, 단순 암기로는 절대 풀 수 없는 구조로 변하고 있다.파이썬 코드 문제의 진화, 더 이상 기본기만으로는 안 된다
지난 2024년 2회 시험에서 가장 눈에 띄었던 변화는 파이썬 문제의 난이도 상승이었다. 예전에는 print("Hello") 같은 단순 출력이나 리스트 인덱싱 정도만 나왔다면, 이제는 문자열 길이 계산, f-string 템플릿, 그리고 boolean 배열을 활용한 논리 연산까지 등장했다.
특히 f-string은 우리가 일상적으로 쓰는 print(f"값은 {변수}입니다") 같은 단순한 형태가 아니라, 변수 조합과 연산 결과를 동시에 처리하는 복합적인 구조로 나왔다. 실제 복원 문제를 보면 이런 식이다.문자열을 입력받아 특정 패턴을 추출하고, 그 결과를 boolean 배열에 true/false로 전환한 뒤 다시 재귀 함수로 처리하는 형태. 한 강의 플랫폼의 수강생 수가 5,260명에 달할 정도로 인기가 높은 강사도 "파이썬 문법을 더 강화해야 한다"고 말할 정도니, 체감 난이도가 얼마나 올랐는지 짐작할 수 있다.| 연도 | 파이썬 출제 유형 | 난이도 (상/중/하) | 주요 키워드 |
|---|---|---|---|
| 2023년 1회 | 리스트 기본 연산, 간단한 반복문 | 하 | append, for, print |
| 2023년 2회 | 딕셔너리 활용, 조건문 | 중 | get, keys, if-else |
| 2024년 1회 | 문자열 슬라이싱, f-string 기본 | 중 | len, 인덱싱, format |
| 2024년 2회 | 문자열 길이+재귀+boolean 배열 | 상 | f-string 템플릿, boolean 전환, 재귀 조합 |
이 표를 보면 한눈에 알 수 있다. 난이도가 급격히 상승한 시점이 2024년 2회라는 점이다.
파이썬 문제를 포기하고 자바만 공부했던 사람들은 이번에 큰 타격을 입었다. 왜냐하면 파이썬과 자바가 번갈아 나오는 게 아니라, 둘 다 나오기 때문이다.어떤 회차는 파이썬 2문제, 자바 2문제 이런 식으로 비슷한 비중으로 출제된다. 여기서 중요한 건 실전에서 코드를 직접 써보는 연습이다.눈으로 읽고 이해하는 것과 직접 키보드로 타이핑해서 실행하는 것은 완전히 다른 영역이다. 필자는 주변에 정보처리기사 실기를 준비하는 후배들에게 항상 이렇게 말한다."IDE 켜고 직접 디버깅해봐. 컴파일 에러가 나는 그 순간이 진짜 공부하는 시간이다. "재귀함수의 복잡성, result 변수의 비밀
이번 시험에서 가장 많은 수험생을 울린 게 바로 재귀함수 문제다. 일반적으로 재귀함수는 팩토리얼(factorial)이나 피보나치 수열 같은 전형적인 패턴만 외우면 된다고 생각한다.
하지만 2024년 2회에서는 완전히 새로운 유형이 등장했다. 바로 result 변수에 조합된 결과가 뒤에서부터 더해지는 형태다.쉽게 말해, 함수 호출이 끝나고 반환될 때 값이 누적되는 방식인데, 이게 처음 접하면 정말 헷갈린다. 일반적인 재귀는 f(n) = n * f(n-1)처럼 앞에서부터 계산이 진행된다고 착각하기 쉽다.하지만 실제로는 가장 깊은 재귀 호출부터 결과가 리턴되면서 역순으로 연산된다. 예를 들어 이런 코드가 나왔다고 해보자.```python def mystery(n): if n == 0: return "" result = mystery(n-1) return result + str(n)
print(mystery(5)) ```
이 코드를 처음 본 사람들은 대부분 "12345"가 나올 거라고 생각한다. 하지만 실제 출력은 "12345"가 아니라 "54321"이다.
왜 그럴까? result 변수가 호출될 때마다 먼저 재귀를 깊게 들어간 뒤에, 리턴되면서 값을 뒤에 붙이기 때문이다. 이게 바로 "c + result" 형태의 조합이 아니라 "result + c" 형태라는 점이 핵심이다.| 재귀 단계 | 호출 스택 | result 값 | 반환 값 |
|---|---|---|---|
| 1단계 | mystery(5) | mystery(4) 호출 후 대기 | "4321" + "5" = "43215" |
| 2단계 | mystery(4) | mystery(3) 호출 후 대기 | "321" + "4" = "3214" |
| 3단계 | mystery(3) | mystery(2) 호출 후 대기 | "21" + "3" = "213" |
| 4단계 | mystery(2) | mystery(1) 호출 후 대기 | "1" + "2" = "12" |
| 5단계 | mystery(1) | mystery(0) 호출 후 대기 | "" + "1" = "1" |
| 6단계 | mystery(0) | - | "" |
이런 복잡한 구조를 시험장에서 종이에 손으로 풀어야 한다고 생각해보자. 시간은 2시간 30분이고, 문제는 20문제 안팎. 한 문제당 평균 7-8분 정도밖에 쓸 수 없다. 재귀함수 문제 하나에 15분 이상 쓰면 나머지 문제를 풀 시간이 없다.
그래서 필자가 추천하는 방법은 함수 호출 트리를 직접 그려보는 연습이다. 처음에는 시간이 오래 걸리지만, 10문제 정도 그리다 보면 패턴이 보인다.특히 result 변수가 앞에 있느냐 뒤에 있느냐에 따라 출력 순서가 완전히 달라진다는 걸 체득할 수 있다.결합도와 응집도, 쿼리 문제는 외우면 맞힐 수 있다
파이썬과 재귀함수에 쫄아 있을 필요가 전혀 없는 부분도 있다. 바로 소프트웨어 공학 이론과 SQL 쿼리 문제다.
실제로 2024년 2회 시험을 본 수험생들의 후기를 종합해보면, "결합도, 응집도, 쿼리는 외웠으면 맞힐 수 있었다"는 의견이 지배적이다. 여기서 중요한 건 무작정 외우는 게 아니라, 출제 패턴을 아는 것이다.예를 들어 결합도 문제는 항상 이런 식으로 나온다. "다음 중 결합도가 가장 낮은(또는 높은) 것은?" 보기에는 자료 결합도, 스탬프 결합도, 제어 결합도, 외부 결합도, 공통 결합도, 내용 결합도가 나온다.정답은 항상 자료 결합도(가장 낮음) 또는 내용 결합도(가장 높음) 중 하나다.| 결합도 유형 | 낮음 ↔ 높음 | 주요 특징 | 기출 빈도 |
|---|---|---|---|
| 자료 결합도 | 가장 낮음 | 매개변수로 단순 데이터 전달 | ★★★★★ |
| 스탬프 결합도 | 낮음 | 자료구조 형태로 전달 | ★★★ |
| 제어 결합도 | 중간 | 제어 신호(flag) 전달 | ★★★ |
| 외부 결합도 | 중간 | 외부 데이터 공유 | ★★ |
| 공통 결합도 | 높음 | 전역 변수 공유 | ★★★★ |
| 내용 결합도 | 가장 높음 | 다른 모듈 내부 직접 수정 | ★★★★ |
응집도도 비슷하다. "다음 중 응집도가 가장 높은(또는 낮은) 것은?"이라는 문제가 나오면, 기능적 응집도(가장 높음) 또는 우연적 응집도(가장 낮음) 중 하나를 고르면 된다.
실제 시험에서 이 패턴이 90% 이상이다. SQL 쿼리 문제는 더 단순하다.JOIN, GROUP BY, HAVING, 서브쿼리 이 네 가지만 제대로 알아보고 있으면 웬만한 문제는 다 풀린다. 특히 INNER JOIN과 LEFT JOIN의 차이를 정확히 아는 게 중요하다.INNER JOIN은 양쪽 테이블에 모두 존재하는 데이터만 가져오지만, LEFT JOIN은 왼쪽 테이블의 모든 데이터를 기준으로 오른쪽 테이블이 없으면 NULL로 표시한다. 이런 이론 문제들은 시험 보기 일주일 전에 몰아서 외워도 충분하다. 하지만 그 전까지는 반드시 코드 문제에 집중해야 한다.왜냐하면 코드 문제는 단기간에 외워서 되는 게 아니기 때문이다.인터페이스와 상속, 업캐스팅은 안 나왔다
자바 문제도 변화가 있었다. 예전에는 상속, 업캐스팅, 다형성 같은 객체지향 개념이 자주 나왔다.
하지만 2024년 2회에서는 인터페이스(interface)와 implements가 주를 이뤘다. 상속 문제는 전혀 나오지 않았다고 봐도 무방하다.인터페이스 문제의 특징은 뭘까? 추상 메서드를 모두 구현해야 한다는 점이다. 자바에서 인터페이스를 implements한 클래스는 인터페이스에 선언된 모든 메서드를 반드시 오버라이딩해야 한다.만약 하나라도 빠뜨리면 컴파일 에러가 난다. 시험에서는 이걸 이용해서 "다음 코드의 실행 결과는?" 같은 문제가 나온다.예를 들어 이런 코드를 생각해보자.```java interface Animal { void sound(); }
class Dog implements Animal { public void sound() { System.out.println("멍멍"); } }
class Cat implements Animal { public void sound() { System.out.println("야옹"); } }
public class Test { public static void main(String[] args) { Animal a = new Dog(); a.sound(); a = new Cat(); a.sound(); } } ```
이 코드의 실행 결과는 "멍멍" 다음에 "야옹"이 출력된다. Animal 타입의 참조 변수 a가 Dog 객체를 가리켰다가 Cat 객체로 바뀌면서, 실제 객체의 sound 메서드가 호출되기 때문이다.
이것이 바로 인터페이스를 통한 다형성이다.| 자바 개념 | 출제 여부 (2024년 2회) | 중요도 | 학습 난이도 |
|---|---|---|---|
| 상속(extends) | ❌ | 하 | 중 |
| 업캐스팅 | ❌ | 하 | 중 |
| 인터페이스(implements) | ✅ | 상 | 하 |
| 추상 클래스 | ✅ | 중 | 중 |
| 예외 처리 | ✅ | 중 | 상 |
인터페이스 문제는 문법만 알면 쉽게 풀린다. abstract 키워드를 메서드 앞에 붙이면 추상 메서드가 되고, implements 키워드로 인터페이스를 구현한다는 선언만 하면 된다. 하지만 실제 시험에서는 여러 인터페이스를 동시에 implements하는 경우도 나오니 주의해야 한다.
필자가 추천하는 공부 방법은 직접 이클립스나 인텔리제이를 켜서 10개 정도의 인터페이스 예제를 만들어보는 것이다. Animal, Vehicle, Shape 같은 기본적인 인터페이스부터 시작해서, 실제 시험에 나올 법한 복잡한 구조까지 연습해보면 좋다.시험장에서 마주칠 복원 문제의 실제 패턴
복원 문제를 분석해보면 재미있는 패턴이 있다. 바로 같은 개념이 약간 다른 형태로 반복해서 출제된다는 점이다.
예를 들어 boolean 배열을 true/false로 전환하는 문제는 2024년 1회와 2회에 연속으로 나왔다. 처음에는 홀수/짝수 판별에 사용했지만, 두 번째는 소수 판별에 응용했다.이런 패턴을 알면 다음 회차를 예측할 수 있다. 필자가 분석한 바로는, 2025년이나 2026년 시험에서는 다음과 같은 유형이 나올 가능성이 높다.- 2차원 배열을 활용한 boolean 전환 문제 - 행과 열을 동시에 체크하는 형태
- 재귀함수와 반복문을 결합한 문제 - 재귀 안에 for문이 있는 형태
- f-string에 조건문이 포함된 문제 - f"{'합격' if score >= 60 else '불합격'}" 같은 형태
- 인터페이스를 여러 개 상속받는 문제 - implements A, B, C 형태
- SQL 서브쿼리와 JOIN이 결합된 문제 - IN, EXISTS, NOT EXISTS 활용
| 예상 출제 유형 | 난이도 | 준비 방법 | 필수 학습 시간 |
|---|---|---|---|
| 2차원 배열 + boolean | 중 | 행렬 연습 문제 10개 풀기 | 5시간 |
| 재귀 + 반복문 결합 | 상 | 피보나치, 하노이탑 변형 풀기 | 10시간 |
| f-string 조건문 | 하 | format 함수와 비교 | 3시간 |
| 다중 인터페이스 | 중 | implements 예제 10개 만들기 | 4시간 |
| 서브쿼리 + JOIN | 중 | 실제 데이터베이스에서 연습 | 8시간 |
이런 예측을 바탕으로 공부하면 무작정 기출문제만 돌리는 것보다 훨씬 효율적이다. 특히 시간이 부족한 직장인이나 학생이라면, 출제 확률이 높은 유형에 집중하는 게 합격의 지름길이다.
합격선을 넘기 위한 마지막 전략
정보처리기사 실기의 합격선은 보통 60점에서 70점 사이다. 회차에 따라 난이도가 달라서 정확히 정해져 있지는 않지만, 보통 전체 평균이 50점대 후반이면 합격선이 60점 정도로 내려간다.
반대로 다들 잘 봤으면 70점까지 올라가기도 한다. 여기서 중요한 건 모든 문제를 다 맞힐 필요가 없다는 점이다.20문제 중 12문제만 맞혀도 합격이다. 즉, 8문제는 틀려도 된다.그렇다면 어떤 문제를 포기할지 전략적으로 선택해야 한다. 필자의 경험상, 재귀함수 문제 하나를 포기하고 대신 SQL 문제를 확실히 맞히는 게 낫다. 재귀함수는 이해하는 데 시간이 오래 걸리고, 실수할 확률도 높다.반면 SQL은 패턴이 정해져 있어서 1-2주만 집중적으로 공부하면 90% 이상 맞힐 수 있다. 실제로 2024년 2회 시험에서는 SQL 문제가 3-4문제 나왔다.이걸 다 맞히면 15-20점을 확보할 수 있다. 여기에 소프트웨어 공학 이론 문제(결합도, 응집도, 테스트 등)가 3-4문제 더 나오고, 데이터베이스 이론 문제(정규화, 트랜잭션, 인덱스 등)도 2-3문제 나온다.이론 문제만 잘 맞혀도 35-45점 정도는 기본으로 깔고 들어간다.| 문제 유형 | 예상 개수 | 확보 가능 점수 | 학습 난이도 |
|---|---|---|---|
| SQL 쿼리 | 3-4문제 | 15-20점 | 중 |
| 소프트웨어 공학 이론 | 3-4문제 | 15-20점 | 하 |
| 데이터베이스 이론 | 2-3문제 | 10-15점 | 중 |
| 파이썬 코드 | 3-4문제 | 15-20점 | 상 |
| 자바 코드 | 2-3문제 | 10-15점 | 상 |
| 기타(보안, 네트워크 등) | 2-3문제 | 10-15점 | 중 |
이 표를 보면 이론 문제와 SQL만 잘 맞혀도 합격선에 근접할 수 있다는 걸 알 수 있다. 코드 문제에서 절반 정도만 맞혀도 60점을 넘길 수 있다.
물론 코드 문제를 아예 포기하라는 뜻은 아니다. 다만 우선순위를 정하라는 것이다.필자는 시험을 준비하는 사람들에게 항상 이렇게 말한다. "처음 2주는 SQL과 이론 문제에 집중하고, 남은 2주는 코드 문제에 투자하라. 마지막 1주일은 기출문제를 풀면서 시간 배분 연습을 하라." 이렇게 하면 대부분의 사람이 합격선을 넘는다.실제로 필자의 지인 중에는 코드 문제를 30%도 못 풀었는데도 합격한 사례가 있다. 그 사람은 SQL과 이론 문제를 완벽하게 맞혀서 65점으로 합격했다.반대로 코드 문제는 잘 풀었지만 이론 문제에서 많이 틀려서 58점으로 떨어진 사람도 봤다. 결국 정보처리기사 실기는 전략 게임이다.어디에 시간을 투자할지, 어떤 문제를 포기할지를 결정하는 능력이 합격을 좌우한다. 그리고 그 전략의 핵심은 바로 복원 문제 분석에 있다.최신 트렌드를 알면 알수록, 합격선은 더 가까워진다.