2024년 기출 완전 분석
정보처리기사 실기
핵심 개념 총정리
1회 · 2회 · 3회 총 60문제 분석 기반
2024년 1회
3월 시행
코드 7|이론 13
2024년 2회
7월 시행
코드 8|이론 12
2024년 3회
10월 시행
코드 8|이론 12
📊 분야별 출제 비중 (60문제 기준)
💻
프로그래밍 언어
싱글톤 패턴 (1회 1번)
static 인스턴스를 하나만 생성하여 공유하는 패턴. Connection.get()을 여러 번 호출해도 같은 객체를 반환하므로 count가 누적됩니다. _inst == null일 때만 새 객체를 생성하고, 이후에는 기존 객체를 반환합니다.💡 정답: 4 — conn1, conn2, conn3 모두 같은 객체이므로 count()가 4번 호출됨
상속과 오버라이딩 / super 키워드 (1회 10번, 16번)
자식 클래스가 부모 메서드를 재정의하면, 부모 타입 변수로 자식 객체를 참조해도 자식의 메서드가 호출됩니다 (동적 바인딩). 단, 필드(변수)는 참조 타입 기준으로 접근됩니다 (정적 바인딩).
super()로 부모 생성자를, super.메서드()로 부모 메서드를 호출할 수 있습니다.💡 핵심: 메서드 → 실제 객체 타입 기준(동적), 필드 → 선언 타입 기준(정적)
배열 참조 비교 == vs equals (2회 1번)
Java에서
== 연산자는 배열의 참조(주소)를 비교합니다. 내용이 같아도 다른 객체면 false. 내용 비교는 Arrays.equals()를 사용해야 합니다.💡 정답: NNN — 세 배열 모두 서로 다른 객체이므로 == 비교 시 모두 false
인터페이스 구현 (2회 14번)
interface는 메서드 시그니처만 정의하고, 구현 클래스에서 반드시 오버라이드해야 합니다. implements 키워드를 사용하여 구현합니다.💡 정답: 25, 20 — 홀수 합(1+3+5+7+9=25), 짝수 합(2+4+6+8=20)
재귀 함수 (2회 17번)
함수가 자기 자신을 호출하는 구조. 반드시 종료 조건(base case)이 필요합니다. 이 문제에서는 문자열 끝부터 역순으로 처리하면서
seen 배열로 중복 문자를 체크합니다.💡 정답: dcba — 뒤에서부터 중복 제거하며 역순 구성
String.split() (2회 20번)
문자열을 구분자로 분리하여 배열 반환. 구분자 사이 빈 문자열("")도 포함된다는 점에 주의하세요.
💡 정답: S — "ITISTESTSTRING".split("T")의 result[3] 값
예외 처리 try-catch-finally (3회 18번)
try에서 예외 발생 → 해당 catch 블록 실행 → finally는 항상 실행. NullPointerException은 Exception의 하위 클래스이므로 먼저 매칭되는 catch가 실행됩니다.💡 정답: 101 — NullPointerException catch(+1) + finally(+100) = 101
제네릭과 타입 소거 (3회 19번)
제네릭 타입
T는 컴파일 시 타입 소거(Type Erasure)가 일어납니다. 런타임에는 Object로 처리되어, 오버로딩된 메서드 중 Object 매개변수 버전이 호출됩니다.💡 정답: B0 — 타입 소거로 Object 버전의 print가 호출됨
문자열 비교: equals vs == (3회 1번)
.equals()는 값 비교, ==는 참조 비교. 리터럴 문자열은 String Pool에서 공유되지만, new String()은 새 객체를 생성합니다.💡 정답: OOAAA — equals 비교 2번 모두 O + 배열 원소 출력 AAA
필드 접근 vs 메서드 접근 — 다형성 (3회 11번)
다형성에서 메서드는 실제 객체 타입 기준(동적 바인딩), 필드는 선언 타입 기준(정적 바인딩)으로 접근됩니다.
Base a = new Derivate()일 때, a.getX()는 Derivate 메서드, a.x는 Base 필드입니다.💡 정답: 52 — a.getX()=21 + a.x=3 + b.getX()=21 + b.x=7
포인터와 문자열 역순 (1회 4번)
char *p는 문자열의 시작 주소. 포인터 연산으로 문자열을 역순으로 만들 수 있습니다. "ABCDEFGH" → 뒤집으면 "HGFEDCBA" → 홀수 인덱스(1,3,5,7)만 출력합니다.💡 정답: GECA
삼항 연산자와 비트 시프트 (1회 2번)
삼항 연산자:
조건 ? 참 : 거짓. 비트 시프트: << n은 2^n 곱하기. v3 << 2 = v3 × 4. if(0)은 거짓이므로 else 블록이 실행됩니다.💡 정답: 151 — v3=29×4=116, v2=35, 합계 151
구조체와 포인터 / 연결 리스트 (1회 11번, 2회 19번, 3회 12번)
구조체 멤버 접근:
변수.멤버 또는 포인터->멤버. 연결 리스트에서 head->n2->n1 같은 체인 접근이 가능합니다. 3회 연속 출제된 핵심 주제!💡 구조체+포인터 조합은 반드시 숙달해야 하는 유형
2차원 배열과 포인터 배열 (2회 13번)
arr[1]은 두 번째 행의 시작 주소. **parr = *(*(parr+0)+0) = arr[1][0] = 4. parr[1][1] = arr[2][1] = 8, *(parr[1]+2) = arr[2][2] = 9.💡 정답: 21 — 8 + 9 + 4 = 21
문자 분류 함수 ctype.h (1회 19번)
isupper(): 대문자, islower(): 소문자, isdigit(): 숫자 판별. 각 문자 유형별 변환 규칙을 적용하는 시저 암호 스타일 문제. 대문자+5, 소문자+10, 숫자+3.💡 정답: Nd sc 1
Call by Value vs Call by Reference (2회 18번)
Call by Value: 값만 복사, 원본 변경 안됨.
swap(a,b)에서 값만 복사되므로 원본 유지. switch에서 break 없으면 fall-through로 아래 case도 실행됩니다.💡 정답: -13 — swap 무효(a=11,b=19), case 11에서 b+=2 + default b+=3 → b=24, 11-24=-13
static 지역 변수 (3회 7번)
static 지역 변수는 함수 호출 간에도 값이 유지됩니다. 초기화는 최초 1회만 수행. 4번 호출 시 x: 0→2→4→6→8, sum = 2+4+6+8.💡 정답: 20
이중 포인터 (3회 16번)
int **pp는 포인터의 포인터. *pp는 원래 포인터, **pp는 원래 값. 함수에 배열 포인터를 전달하여 원소를 직접 수정할 때 활용합니다.💡 정답: 1
리스트 인덱싱과 문자열 슬라이싱 (1회 12번)
i[1]은 문자열의 두 번째 문자. 슬라이싱 [start:end:step]으로 부분 추출. 각 도시명의 두 번째 문자를 이어붙이는 문제입니다.💡 정답: Seynaau — S + e(Seoul) + y(Kyeonggi) + n(Incheon) + a(Daejun) + a(Daegu) + u(Pusan)
f-string과 패턴 매칭 (2회 6번)
f"text{변수}" 형식의 포맷 문자열. x[i:i+n]으로 부분 문자열을 추출하여 패턴과 비교하고 일치 횟수를 카운트합니다.💡 정답: ab3ca3 — "ab" 3번, "ca" 3번 등장
리스트 뒤집기와 sum (3회 2번)
lst[-i-1]은 뒤에서 i+1번째. lst[::2]는 짝수 인덱스, lst[1::2]는 홀수 인덱스 원소.💡 정답: 3 — 뒤집은 후 [6,5,4,3,2,1], (6+4+2)-(5+3+1) = 3
type() 비교와 분기 처리 (3회 10번)
type(100)=int, type("")=str, type((1,2))=tuple. 100.0은 float → else 분기. 문자열 '100.0'은 str → len() 반환.💡 정답: 45 — func('100.0')=5 + func(100.0)=20 + func((100,200))=20
🗄️
데이터베이스
서브쿼리와 IN 절 (1회 13번)
서브쿼리: SELECT 안의 SELECT.
IN 연산자로 서브쿼리 결과에 포함되는 행을 필터링합니다.💡 정답: B열에서 a, b 반환
DML 기본 구문 빈칸 (2회 3번)
INSERT INTO 테이블 VALUES (...) — 삽입
INSERT INTO 테이블 SELECT ... FROM ... — 서브쿼리 삽입
SELECT * FROM 테이블 — 조회
UPDATE 테이블 SET 컬럼=값 WHERE 조건 — 수정
INSERT INTO 테이블 SELECT ... FROM ... — 서브쿼리 삽입
SELECT * FROM 테이블 — 조회
UPDATE 테이블 SET 컬럼=값 WHERE 조건 — 수정
💡 정답: ① VALUES ② SELECT ③ FROM ④ SET
연산자 우선순위 AND > OR (1회 18번)
SQL에서
AND가 OR보다 우선순위가 높습니다. 괄호 없이 복합 조건을 쓸 때 주의!💡 정답: 1
JOIN + HAVING + 중첩 서브쿼리 (3회 3번)
JOIN으로 테이블 결합 → 서브쿼리 필터링. HAVING은 GROUP BY 결과에 조건 적용. HAVING count(*) < 2는 그룹별 행이 2개 미만.💡 정답: 1
정규화 단계 (1회 6번)
1NF: 원자값 (도메인이 원자값만 포함)
2NF: 부분 함수 종속 제거
3NF: 이행 함수 종속 제거 (A→B→C에서 A→C 제거)
BCNF: 모든 결정자가 후보키
2NF: 부분 함수 종속 제거
3NF: 이행 함수 종속 제거 (A→B→C에서 A→C 제거)
BCNF: 모든 결정자가 후보키
💡 암기: "도원부이" — 도메인 원자값(1NF), 부분종속 제거(2NF), 이행종속 제거(3NF)
Degree와 Cardinality (2회 4번)
Degree(차수) = 속성(열)의 수, Cardinality(카디널리티) = 튜플(행)의 수.
💡 정답: Cardinality=5(행), Degree=4(열) — 암기: "디=열, 카=행"
키의 종류 (3회 15번)
슈퍼키: 유일성 O, 최소성 X / 후보키: 유일성 O, 최소성 O / 기본키: 후보키 중 선택 / 대체키: 기본키 제외 후보키 / 외래키: 다른 테이블 기본키 참조
💡 포함관계: 슈퍼키 ⊃ 후보키 ⊃ 기본키 + 대체키
무결성 제약조건 (3회 8번)
개체 무결성: 기본키는 NULL·중복 불가 / 참조 무결성: 외래키는 참조 테이블에 존재해야 함 / 도메인 무결성: 속성값이 도메인 범위 내
💡 정답: 개체 무결성 위반 (PK가 NULL이거나 중복)
반정규화 (2회 2번)
성능 향상을 위해 의도적으로 중복을 허용하는 기법. 테이블 병합, 중복 컬럼 추가 등. 조회 성능↑, 무결성↓.
💡 정규화 ↔ 반정규화: 무결성 vs 성능의 트레이드오프
조인의 종류 (1회 8번)
세타 조인: 비교 연산자로 조건 결합 / 동등 조인: = 조건만 사용 / 자연 조인: 동등 조인 + 중복 속성 자동 제거
💡 범위: 세타조인 ⊃ 동등조인 ⊃ 자연조인 (점점 좁아짐)
⚙️
소프트웨어 공학
Abstract Factory (1회 20번)
생성 패턴. 관련 객체 군을 하나의 인터페이스로 생성. 구체 클래스에 의존하지 않고 연관된 객체들을 묶어 생성. Kit 패턴이라고도 불림.
💡 생성 패턴 5가지: Singleton, Factory Method, Abstract Factory, Builder, Prototype
Iterator (2회 10번)
행위 패턴. 컬렉션 내부 구조를 노출하지 않고 순차적 접근. 반복 프로세스를 캡슐화합니다.
💡 구조 패턴 7가지: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
행위 패턴 분류 (3회 6번)
객체 간 상호작용과 책임 분배를 정의. Chain of Responsibility, Command, Observer, Strategy, State, Template Method, Visitor 등.
💡 GoF 23개 = 생성(5) + 구조(7) + 행위(11)
MC/DC — 변경 조건/결정 커버리지 (1회 14번)
각 개별 조건이 독립적으로 전체 결과에 영향을 미치는지 테스트. 항공·안전 소프트웨어에서 필수.
💡 커버리지 강도: 문장 < 분기(결정) < 조건 < 조건/결정 < MC/DC < 다중조건 < 경로
문장 / 분기 / 조건 커버리지 (3회 13번)
문장: 모든 문장 최소 1번 실행 / 분기: 모든 분기(T/F) 최소 1번 실행 / 조건: 각 개별 조건의 T/F 모두 테스트
💡 정답: 1.문장 2.분기 3.조건
응집도 순서 (1회 3번)
응집도 높을수록 좋은 모듈.
높은 순: 기능 > 순차 > 교환(통신) > 절차 > 시간 > 논리 > 우연
높은 순: 기능 > 순차 > 교환(통신) > 절차 > 시간 > 논리 > 우연
💡 암기: "기순교절시논우" — 기능적이 가장 좋고 우연적이 가장 나쁨
순차적 응집도 (2회 9번)
한 기능의 출력이 다음 기능의 입력으로 사용되는 형태. 파이프라인 구조와 유사.
💡 출력→입력 연결 = 순차적 응집도
제어 결합도 (2회 16번)
한 모듈이 다른 모듈의 논리적 흐름을 제어하기 위해 제어 요소(플래그)를 전달. 결합도는 낮을수록 좋음.
💡 결합도(낮→높): 자료 < 스탬프 < 제어 < 외부 < 공통 < 내용 — "자스제외공내"
연관 / 일반화 / 의존 관계 (3회 14번)
연관(Association): has-a 관계 (차↔타이어) / 일반화(Generalization): is-a 상속 (차→버스/택시) / 의존(Dependency): 일시적 사용 (TV←리모콘)
💡 UML 관계: 연관 / 집합 / 합성 / 일반화 / 실체화 / 의존
🌐
네트워크 & 보안
OSPF (1회 7번)
링크 상태(Link State) 라우팅 프로토콜. IGP(내부 게이트웨이). Dijkstra 알고리즘으로 최단 경로 계산. 대규모 네트워크에 적합.
💡 거리벡터: RIP(홉 수, 최대 15) / 링크상태: OSPF(Dijkstra) — OSPF = Open Shortest Path First
RIP 최단경로 계산 (2회 11번)
RIP은 홉 수(hop count) 기반 라우팅. 각 라우터를 거칠 때마다 홉 1 증가. 최소 홉 경로 선택.
💡 정답: A → D → C → F
IP 주소와 서브넷 마스크 (1회 5번)
/24 = 255.255.255.0 (호스트 254개) / /22 = 255.255.252.0 (호스트 1022개). 같은 네트워크 대역만 할당 가능. 네트워크·브로드캐스트 주소는 할당 불가.💡 호스트 수 = 2^(32-서브넷비트) - 2
패킷 교환 방식 (2회 8번)
연결형 — 가상회선(Virtual Circuit): 경로 설정 후 전송, 순서 보장
비연결형 — 데이터그램(Datagram): 각 패킷 독립 경로, 순서 보장 X
비연결형 — 데이터그램(Datagram): 각 패킷 독립 경로, 순서 보장 X
💡 가상회선=연결형(TCP 유사), 데이터그램=비연결형(UDP 유사)
IPSec (2회 5번)
네트워크 계층에서 IP 패킷 암호화/인증. VPN 구현에 사용. AH(인증) + ESP(암호화+인증).
💡 IPSec = IP + Security, 3계층(네트워크)에서 동작
VPN (3회 17번)
공용 네트워크를 통해 사설 네트워크를 확장하는 기술. IP 은닉, 암호화 통신. IPsec, SSL, L2TP 프로토콜 사용.
💡 VPN = Virtual Private Network (가상 사설 네트워크)
Ad-hoc Network (3회 20번)
중앙 관리 없이 임시 구성되는 무선 네트워크. 노드 간 직접 통신. 긴급 구조·군사 상황 활용.
💡 Ad-hoc = "임시의" → 인프라 없이 즉석 구성
URL 구조 (3회 9번)
scheme://authority/path?query#fragmentscheme: 프로토콜 / authority: 호스트+포트 / path: 경로 / query: 파라미터 / fragment: 문서 내 위치
💡 정답: (1)authority=4, (2)scheme=3, (3)query=1, (4)path=2, (5)fragment=5
Rootkit (1회 15번)
해커가 존재를 숨기면서 시스템에 무제한 접근. OS 시스템콜을 해킹하여 안티바이러스 우회.
💡 악성 프로그램: Worm(자가복제) / Trojan(위장) / Virus(숙주) / Ransomware(암호화협박) / Rootkit(은닉)
APT (1회 17번)
지능형 지속 위협(Advanced Persistent Threat). 특정 표적 장기간 정보수집 후 공격. Zero-day 등 다양한 기법. 침투→검색→수집→유출 4단계.
💡 APT 키워드: "특정 표적" + "지속적" + "다양한 기법" + "4단계"
스머프 공격 (3회 5번)
ICMP Echo Reply 대량 전송으로 DoS 유발. 브로드캐스트 주소를 이용하여 다수 호스트가 응답하게 만듦.
💡 Smurf = ICMP + 브로드캐스트 → DoS 공격
AES 암호화 (2회 7번)
대칭키 블록 암호. DES 대체 NIST 표준. 키: 128/192/256비트, 블록: 128비트 고정.
💡 대칭키: DES, 3DES, AES, SEED / 비대칭키: RSA, ECC / 해시: SHA, MD5
🖥️
운영체제
LRU & LFU (1회 9번)
LRU(Least Recently Used): 가장 오래 사용하지 않은 페이지 교체
LFU(Least Frequently Used): 사용 빈도가 가장 낮은 페이지 교체
FIFO: 먼저 들어온 페이지 먼저 교체
OPT: 가장 오래 사용 안 될 페이지 교체 (이론적 최적)
LFU(Least Frequently Used): 사용 빈도가 가장 낮은 페이지 교체
FIFO: 먼저 들어온 페이지 먼저 교체
OPT: 가장 오래 사용 안 될 페이지 교체 (이론적 최적)
💡 정답: LRU=6, LFU=6
LRU 페이지 부재 계산 (3회 4번)
참조 순서: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
프레임 3개로 LRU 시뮬레이션. 프레임에 없는 페이지 → 부재(page fault) 카운트. 교체 시 가장 오래 사용 안 한 페이지 제거.
프레임 3개로 LRU 시뮬레이션. 프레임에 없는 페이지 → 부재(page fault) 카운트. 교체 시 가장 오래 사용 안 한 페이지 제거.
💡 정답: 12회 — 표를 그려서 단계별로 추적하는 연습 필수!
SRT 스케줄링 (2회 12번)
SRT(Shortest Remaining Time) = 선점형 SJF. 남은 실행 시간이 가장 짧은 프로세스 우선.
FCFS: 선입선출, 비선점 / SJF: 최단작업 우선, 비선점 / SRT: 최단잔여 우선, 선점 / RR: 타임퀀텀 순환, 선점
FCFS: 선입선출, 비선점 / SJF: 최단작업 우선, 비선점 / SRT: 최단잔여 우선, 선점 / RR: 타임퀀텀 순환, 선점
💡 정답: 평균 대기시간 6.5 — 간트 차트를 그려서 계산
📌 학습 전략 TIP
코드 문제는 직접 손으로
종이에 변수 값 변화를 추적하며 풀기. 특히 포인터, 재귀, 상속 문제는 반드시 손코딩으로 연습하세요.
용어는 영문 약자까지
OSPF, IPSec, APT 등 영문 약자와 풀네임 모두 암기. 약자로만 출제되는 경우가 많습니다.
패턴은 분류별로 암기
GoF 23개 패턴을 생성/구조/행위로 분류하고, 각 패턴의 핵심 키워드 1줄 정리하세요.
계산 문제 공식 정리
페이지 교체, 스케줄링 평균 대기시간, 서브넷 계산 등은 공식과 풀이 과정을 체계화하세요.
🔖 시험 직전 빠른 암기
응집도 (높→낮)
기순교절시논우
기능 > 순차 > 교환 > 절차 > 시간 > 논리 > 우연
결합도 (낮→높)
자스제외공내
자료 < 스탬프 < 제어 < 외부 < 공통 < 내용
정규화 단계
1NF: 원자값
2NF: 부분종속 제거
3NF: 이행종속 제거
BCNF: 모든 결정자=후보키
GoF 패턴 분류
생성(5): 싱글톤, 팩토리메서드, 추상팩토리, 빌더, 프로토타입
구조(7) / 행위(11)
커버리지 강도
문장 < 분기 < 조건 < 조건/결정 < MC/DC < 다중조건 < 경로
키 포함관계
슈퍼키 ⊃ 후보키 ⊃ 기본키
대체키 = 후보키 - 기본키
외래키 = 다른 테이블 PK 참조
'자격증 > 정보처리기사' 카테고리의 다른 글
| [정보처리기사 필기 요약] #2-1. 애플리케이션 테스트 (0) | 2026.05.07 |
|---|---|
| [정보처리기사 필기 요약] #1-4. 객체지향 분석 방법론 (0) | 2026.05.07 |
| [정보처리기사 필기 요약] #1-2. 미들웨어 개념과 종류 (0) | 2026.05.07 |
| [정보처리기사 필기 요약] #1-1. UML (0) | 2026.05.06 |
| [정보처리기사] 2025년 1,2,3회 실기기출분석 & 개념정리 (1) | 2026.04.17 |