자격증/정보처리기사

[정보처리기사] 2025년 1,2,3회 실기기출분석 & 개념정리

개발자혜콩 2026. 4. 17. 16:02
2025년 1·2·3회 분석

정보처리기사 실기
기출분석 & 개념정리

60문항 완벽 분석 · 출제 빈도 · 핵심 개념 총정리

60
총 분석 문항
8
핵심 출제 영역
3회
연속 코딩 출제
60%
프로그래밍 비중
📊
출제 빈도 분석
출제 영역 1회 2회 3회 합계 빈도
C언어 3 3 3 9
 
Java 4 3 2 9
 
Python 1 1 1 3
 
SQL / DB 3 2 3 8
 
네트워크 / 보안 4 3 3 10
 
소프트웨어 공학 3 2 2 7
 
OS / 스케줄링 1 1 1 3
 
디자인패턴 1 1 0 2
 
⚠️ 2025년 핵심 트렌드
프로그래밍 문제가 전체의 약 60%를 차지하며, 특히 C언어 구조체+포인터+연결리스트, Java 상속+다형성+오버라이딩 난이도가 크게 상승했습니다. 단순 출력 문제보다 동적 메모리 할당, 비트 연산, 재귀함수 등 심화 문제가 증가하고 있습니다.
🔧
1. C언어 핵심 개념

🔗 포인터 (Pointer) 매회 출제

포인터는 메모리 주소를 저장하는 변수입니다. 2025년 3회 모두 포인터 문제가 출제되었으며, 특히 이중 포인터구조체 포인터가 자주 나왔습니다.

기본 문법


int a = 10;
int *p = &a;     // p는 a의 주소를 저장
printf("%d", *p);  // 10 출력 (*p는 a의 값)

int **pp = &p;   // 이중 포인터: 포인터의 주소
printf("%d", **pp); // 10 출력

포인터 배열 vs 배열 포인터

포인터 배열 int *p[3]

포인터를 원소로 갖는 배열. 각 원소가 주소를 저장. 문자열 배열에 자주 사용.

배열 포인터 int (*p)[3]

배열 전체를 가리키는 포인터. 2차원 배열 접근 시 사용. p+1 하면 행 하나를 건너뜀.

자주 출제되는 패턴


// 패턴1: 전위/후위 증감 (1회, 3회 출제)
*++p      → p를 먼저 증가, 그 위치의 값
++*p      → p가 가리키는 값을 증가
*p++      → 현재 값 사용 후, p 증가
(*p)++    → p가 가리키는 값 사용 후, 그 값 증가

// 패턴2: 구조체 포인터 (매회 출제)
struct dat *ptr = a;
ptr->x        → (*ptr).x와 동일
(ptr + 1)->y  → 다음 구조체 원소의 y 접근

// 패턴3: 이중 포인터 (2회 출제)
struct dat **pptr = &ptr;
(*pptr)[1] = (*pptr)[2];   → ptr[1] = ptr[2]와 동일
// 패턴2: 구조체 포인터 (매회 출제)
struct dat *ptr = a;
ptr->x → (*ptr).x와 동일
(ptr+1)->y → 다음 구조체 원소의 y 접근
// 패턴3: 이중 포인터 (2회 출제) struct dat **pptr = &ptr; (*pptr)[1] = (*pptr)[2]; → ptr[1] = ptr[2]와 동일
💡 시험 꿀팁
포인터 문제는 반드시 메모리 그림을 그려서 풀어야 합니다. 변수, 주소, 값을 표로 정리하면 실수를 줄일 수 있어요.

📦 구조체 (Struct) 매회 출제

2025년 3회 모두 구조체 문제가 출제되었습니다. 특히 구조체 + 포인터 + 연결리스트 조합이 핵심입니다.

// 메모리 정렬 (패딩) - 1회 출제
struct STUDENT {
    char check;     // 1B → 패딩으로 8B
    double score;   // 8B
    int math;       // 4B → 패딩으로 8B
};   // sizeof = 24 (가장 큰 타입 기준 정렬)

메모리 정렬 규칙

가장 큰 타입 정렬 단위 예시
double (8B) 8바이트 char+double+int → 8+8+8 = 24
int (4B) 4바이트 char+int → 4+4 = 8
short (2B) 2바이트 char+short → 2+2 = 4

🔗 연결리스트 (Linked List) 난이도 상승

2025년 1회, 2회, 3회 모두 연결리스트 문제가 출제되었습니다. 삽입, 삭제, 탐색, 역순 연산을 반드시 이해해야 합니다.

// 연결리스트 노드 앞에 삽입 (1회 출제)
Node* insert(Node* head, int value) {
    Node* new_node = (Node*)malloc(sizeof(Node));

    new_node->value = value;
    new_node->next = head;   // 새 노드가 기존 head를 가리킴

    return new_node;  // 새 노드가 새 head
}

// 결과: 5 → 4 → 3 → 2 → 1 (역순으로 쌓임)

// 문자열로 역순 연결리스트 (2회 출제)
// func("BEST") → T → S → E → B → 출력: TSEB

⚡ 비트 연산 & 16진수 필수 암기


// 비트 연산자 (1회, 3회 출제)
&    AND: 둘 다 1이면 1
|    OR:  하나라도 1이면 1
^    XOR: 서로 다르면 1
~    NOT: 비트 반전
<<   왼쪽 시프트 (×2)
>>   오른쪽 시프트 (÷2)

// 16진수 → 2진수 변환
0xA5 = 1010 0101
0xA0 = 1010 0000

0xA5 & 0xA0 = 1010 0000 = 0xA0 = 160

// 서식 지정자
%d    → 10진수
%x    → 16진수(소문자)
%o    → 8진수
%04x  → 16진수 4자리 (0 채움)

📚 스택 & 큐 매회 출제

스택 (Stack) - LIFO

후입선출. push로 넣고 pop으로 꺼냄. 가장 나중에 넣은 것이 먼저 나옴.

큐 (Queue) - FIFO

선입선출. enqueue로 넣고 dequeue로 꺼냄. 원형 큐는 % SIZE로 인덱스 순환.

// 원형 큐 (2회 출제)
void enq(Queue* q, int val) {
q->a[q->rear] = val;
q->rear = (q->rear + 1) % SIZE; // 순환!
}
int deq(Queue* q) {
int
val = q->a[q->front];
q->front = (q->front + 1) % SIZE;
return val;
}
2. Java 핵심 개념

🏗️ 상속 & 다형성 & 오버라이딩 매회 출제

2025년 가장 어려운 Java 문제들은 모두 상속 + 생성자 호출 순서 + 오버라이딩 조합입니다.

// 핵심 규칙
1. 자식 객체 생성 → 부모 생성자가 먼저 실행
2. 오버라이딩 메서드 → 항상 자식 것 호출 (동적 바인딩)
3. static 메서드 → 오버라이딩 불가 (참조 타입 기준)
4. super → 부모 생성자 호출

// 2회 출제 패턴
Parent ref = new Child();

ref.x(2)     → Child의 x() (동적 바인딩)
ref.id()      → Parent의 id() (static, 정적 바인딩)

// 결과: 5P

생성자 호출 순서 (1회 13번 유형)


class Parent {
    static int total = 0;
    int v = 1;

    Parent() {
        total += (++v);     // v=2, total=2
        show();             // ★ Child.show() 호출!
    }

    void show() {
        total += total;
    }
}

class Child extends Parent {
    int v = 10;

    Child() {
        v += 2;
        total += v++;
        show();
    }

    void show() {
        total += total * 2;
    }
}

// new Child() → total = 54
⚠️ 주의
부모 생성자에서 show() 호출 시 오버라이딩된 자식의 show()가 실행됩니다! 자식의 인스턴스 변수는 아직 초기화 전(기본값 0)입니다.

🛡️ 예외 처리 (try-catch-finally) 필수


try {
    // 예외 발생 가능 코드

} catch (ArithmeticException e) {
    // 0으로 나누기 등 산술 오류

} catch (ArrayIndexOutOfBoundsException e) {
    // 배열 범위 초과

} catch (Exception e) {
    // 위에서 안 잡힌 모든 예외

} finally {
    // 예외 여부 관계없이 항상 실행!
}

// 1회: a/b (b=0) → ArithmeticException → "출력1출력5"

⚙️ 인터페이스 & 람다 & enum 신유형


// 인터페이스 구현 (3회)
interface Machine {
    void run();
}

class WashingMachine implements Machine {
    ...
}

// 람다 (2회)
interface F {
    int apply(int x) throws Exception;
}

F f = (x) -> {
    if (x > 2) throw new Exception();
    return x * 2;
};

// enum (3회)
enum Tri {
    A("A"),
    B("AB"),
    C("ABC");
}

Tri.values()             → {A, B, C}
Tri.A.name().length()    → 1
Tri.values()[1].code() → "AB"

📎 객체 참조 vs 값 전달 필수


// 2회 출제 패턴
void change(String[] data, String s) {

    data[0] = s;   // 배열 = 참조 → 원본 변경
    s = "Z";        // String = 불변 → 원본 유지
}

// 결과:
// data[0] = "B", s = "B"
// 출력: BB
💡 핵심 규칙
배열·객체 → 참조 전달(원본 바뀜) / 기본형·String → 값 전달(원본 유지)
🐍
3. Python 핵심 개념

📋 리스트, 딕셔너리, 집합 매회 1문항


# 딕셔너리 컴프리헨션 (2회)
lst = [1, 2, 3]

dst = {i: i * 2 for i in lst}   # {1:2, 2:4, 3:6}
s = set(dst.values())     # {2, 4, 6}

# enumerate (3회)
for index, item in enumerate(data):
    # index = 0,1,2..., item = 리스트 원소

# 집합 연산
s & t   # 교집합
s | t   # 합집합
s - t   # 차집합
🗄️
4. SQL & 데이터베이스

📊 릴레이션 용어 매회 출제

용어 의미 동의어
Attribute 열(Column), 속성 필드
Tuple 행(Row), 레코드 레코드
Degree 속성(열)의 개수 차수
Cardinality 튜플(행)의 개수 기수
Domain 속성이 가질 수 있는 값의 범위 -
Foreign Key 다른 릴레이션의 기본키를 참조 외래키

📝 SQL 핵심 문법 필수


-- 조인 (1회)
SELECT name, incentive
FROM emp, sal
WHERE emp.id = sal.id
  AND incentive >= 500;

-- COUNT와 NULL (3회)
SELECT COUNT(col2)
FROM A
WHERE col1 IN (2, 3)
   OR col2 IN (3, 5);

-- 관계대수 (2회)
π(employee)   → 특정 열만 추출 (중복 제거)
⚠️ COUNT 함수 주의
COUNT(*) → NULL 포함 모든 행
COUNT(컬럼명) → NULL인 행은 제외!

🔑 무결성 제약조건 1회, 3회

제약조건 설명
개체 무결성 기본키는 NULL이나 중복 불가
참조 무결성 외래키는 참조 테이블의 기본키 값이거나 NULL
도메인 무결성 속성 값이 정의된 범위에 포함

➗ 관계대수 3회 출제

연산 기호 설명
프로젝션 π 특정 열만 추출 (중복 제거)
셀렉션 σ 조건에 맞는 행만 추출
나누기 ÷ S의 모든 튜플을 포함하는 R의 튜플
조인 공통 속성으로 결합
🔒
5. 네트워크 & 보안

🌐 네트워크 프로토콜 매회 출제

프로토콜 설명 출제
ARP IP → MAC 주소 변환 1회
RARP MAC → IP 주소 변환 1회
SSH 암호화 원격 접속 (포트 22), Telnet 대체 2회
AJAX 비동기 웹 데이터 교환 2회
OAuth 권한 위임 (소셜 로그인) 3회
OTP 일회용 비밀번호 3회

🛡️ 보안 공격 기법 필수 암기

공격명 설명
세션 하이재킹 TCP 3-way handshake 후 세션 탈취
SYN Flooding SYN 대량 전송 + ACK 미응답 → 서버 마비
스캐어웨어 가짜 바이러스 경고로 금전 요구

📡 서브넷 마스크 계산 1회, 2회


// 풀이법 (2회 출제)
IP:       223.13.234.132
서브넷:   255.255.255.192

// Step 1
192 = 1100 0000   → 호스트 비트 6개

// Step 2
132 AND 192 = 128
→ 네트워크 주소: 223.13.234.128

// Step 3
2^6 - 2 = 62   → 사용 가능 호스트 수

🔍 오류 검출 기법 1회, 3회

기법 설명 분류
Hamming 오류 검출 + 수정 가능 FEC (전방향)
CRC 다항식 나눗셈 기반 검출 BEC (역방향)
Parity 1비트 검사 비트 추가 BEC

FEC (전방향)

수신측 자체 수정. 재전송 불필요. 해밍 코드.

BEC (역방향)

오류 시 NAK → 재전송 요청. CRC, Parity.

🔐 접근통제 모델 3회

모델 설명 특징
MAC 중앙 관리, 보안 등급 기반 군사/기밀, 변경 불가
DAC 소유자가 직접 권한 설정 유연, 보안성 낮음
RBAC 역할(Role) 기반 관리 용이
📐
6. 소프트웨어 공학

🎨 디자인 패턴 1회, 2회

분류 패턴 핵심 키워드
생성 Singleton 인스턴스 1개만
Factory Method 서브클래스에 생성 위임
Abstract Factory 관련 객체 군 생성
Builder 단계별 생성
Prototype 복제
구조 Adapter ★ 인터페이스 변환, wrapper
Proxy ★ 대리 객체, 접근 제어
Bridge 구현/추상 분리
Composite 트리, 부분-전체
Decorator 기능 동적 추가
행위 Observer 상태 변화 알림
Strategy 알고리즘 교체
Template Method 골격 정의
Command 요청 캡슐화

🔗 결합도 1회

약→강 순서 (낮을수록 좋음)

결합도 설명
자료(Data) 단순 데이터 전달
스탬프(Stamp) 자료구조 전달
제어(Control) 플래그 전달
외부(External) 외부 변수 공유
공통(Common) 전역 변수 공유
내용(Content) 내부 변수 직접 접근
💡 암기법
결합도 약→강: "자스제외공내"

✅ 테스트 커버리지 매회 출제

커버리지 설명
문장(Statement) 모든 문장 최소 1번 실행
분기(Branch) 모든 조건문의 T/F 최소 1번씩
조건(Condition) 개별 조건식의 T/F 각각 1번씩
MC/DC 각 조건이 독립적으로 결정에 영향
다중 조건 모든 조건 조합 테스트
⏱️
7. OS & 스케줄링

📊 CPU 스케줄링 2회

알고리즘 방식 특징
FCFS 비선점 먼저 도착 순
SJF 비선점 실행 짧은 것 우선
SRT 선점 SJF 선점 버전
RR 선점 Time Quantum 순환
// RR 평균 대기시간 (2회) // 간트 차트 그려서 풀기! // 대기시간 = 완료시간 - 도착시간 - 실행시간 // 평균 = 각 대기시간의 합 / 프로세스 수

🐧 리눅스 명령어 3회

명령어 기능
pwd 현재 디렉터리 출력
ls 목록 표시
cd 디렉터리 이동
cp 파일 복사
mv 이동/이름변경
chmod 권한 변경
grep 패턴 검색
📊
8. UML & 기타

📦 UML 다이어그램 3회

구조 다이어그램

다이어그램 설명
패키지 ★ 폴더 단위, import/access/merge 관계
클래스 클래스 간 관계
컴포넌트 물리적 구성 요소
배치 HW 노드와 SW 배치

행위 다이어그램

다이어그램 설명
유스케이스 사용자-시스템 상호작용
시퀀스 메시지 교환 순서
상태 상태 변화
활동 워크플로
🎯
최종 정리: 반드시 나오는 TOP 10
# 주제 중요도 대비 전략
1 C언어 포인터+구조체 ⭐⭐⭐⭐⭐ 메모리 그림 그리며 연습
2 Java 상속/오버라이딩 ⭐⭐⭐⭐⭐ 생성자 호출 순서 완벽 이해
3 SQL 조인 & 집계함수 ⭐⭐⭐⭐⭐ NULL 처리 주의
4 서브넷 마스크 계산 ⭐⭐⭐⭐ AND 연산 & 호스트 수
5 테스트 커버리지 ⭐⭐⭐⭐ 문장/분기/조건 차이
6 보안 공격 & 프로토콜 ⭐⭐⭐⭐ 이름+키워드 매칭
7 디자인 패턴 ⭐⭐⭐ 생성/구조/행위 + 키워드
8 연결리스트/큐/스택 ⭐⭐⭐⭐ 코드 직접 트레이싱
9 Python 자료구조 ⭐⭐⭐ 리스트/딕셔너리/집합
10 DB 릴레이션 용어 ⭐⭐⭐⭐ Degree/Cardinality 구분

 

 

2025년 1회.pdf
0.11MB
2025년 2회.pdf
0.11MB
2025년 3회.pdf
0.11MB