본문 바로가기
백엔드

정보처리기사 - 22년 1회 기출문제 오답노트 - 2편

by cook_code 2025. 5. 7.

 

정보처리기사 - 22년 1회 기출문제 오답노트

🗂️ 목차1. 소프트웨어 설계2. 소프트웨어 개발3. 데이터베이스 구축4. 프로그래밍 언어 활용5. 정보시스템 구축 관리 🚩 점수계산 각 과목 20문제씩, 총 5과목 100문제이며, 문제당 1점으로 계산.

howtomakecode.tistory.com

 

🗂️ 목차

1. 소프트웨어 설계

2. 소프트웨어 개발

3. 데이터베이스 구축

4. 프로그래밍 언어 활용

5. 정보시스템 구축 관리

 

🚩 점수계산 

각 과목 20문제씩, 총 5과목 100문제이며, 문제당 1점으로 계산.

총점: 18 + 13 + 16 + 12 + 16 = 75

※ 합격 기준은 보통 과락 없이 60점 이상, 즉 각 과목 8점 이상이며 전체 60점 이상.


⭐3. 데이터베이스 구축 (16/20)

📌[43] 어떤 릴레이션 R의 모든 조인 종속성의 만족이 R의 후보키를 통해서만 만족할 때, 이 릴레이션 R이 해당하는 정규형은? 

- 문제 유형 : 데이터베이스 정규화

- 내 답안 : 제 1정규형

- 정답 : 제 5정규형

 

❌ 왜 틀렸는가?

- "모든 조인 종속성이 후보키를 통해서만 만족된다"는 제5정규형의 정의 문장 그대로임
- 제1정규형은 도메인 원자성 관련 개념이므로, 전혀 관계 없음
정규형 핵심 조건과 정의 문장 연결 학습 부족
 

🔂 다음엔 어떻게 맞출것인가

- 각 정규형의 핵심 개념 + 조건 문장을 통째로 외우기
- 특히 4NF와 5NF는 종속성 기반 정의가 자주 출제되므로 문장 암기 중심 학습 필요

 

📖 참고 개념 정리

정규형 핵심 조건 설명
제 1 정규형  도메인 원자값  반복 속성 제거
제 2 정규형  부분 함수 종속 제거 기본키의 일부분에만 종속된 속성 제거
제 3 정규형  이행적 함수 종속 제거  비기본키 → 비기본키 제거
BCNF 결정자 → 후보키  모든 결정자가 후보키
제 4 정규형  다치 종속 제거 하나의 속성이 여러 값 가질 때
제 5 정규형  조인 종속 = 후보키 기준 후보키로만 조인 종속성 만족 시 성립

 

📌[49] 관계 대수식을 SQL 정의로 옳게 표현한 것은?

- 문제 유형 : 관계 대수 

- 내 답안 : 답 체크 X

- 정답 : SELECT 이름 FROM 학생 WHERE 학과='교육'

 

❌ 왜 틀렸는가?

- 문제에서 선택(σ) + 투영(π) 조합을 SQL로 변환하는 식인데, 선택은 WHERE절, 투영은 SELECT 절에 정확히 대응돼야 함
- 다른 선택지들은 SELECT 대상 또는 조건 컬럼이 잘못 지정됨

 

- 관계 대수식: **π이름(σ학과='교육'(학생))**
  → 조건: 학과='교육'인 튜플 선택 (σ)
  → 투영: 이름 속성만 출력 (π)

 

🔂 다음엔 어떻게 맞출것인가

σ(조건) → `WHERE`  
π(속성) → `SELECT`  
- 이 구조를 고정 공식처럼 암기해서 위에서 아래로 해석

 

📖 참고 개념 정리

관계 대수  SQL 문장 대응
σ조건(릴레이션)     `SELECT * FROM 릴레이션 WHERE 조건`
 π속성(릴레이션)     `SELECT 속성 FROM 릴레이션`
σ조건(π속성(릴레이션))  `SELECT 속성 FROM 릴레이션 WHERE 조건'

 

📌[50] 정규화 과정에서 함수 종속이 A→B이고, B→C일 때 A→C인 관계를 제거하는 단계는?  

- 문제 유형 : 데이터베이스 정규화

- 내 답안 : 1NF -> 2NF

- 정답 : 2NF -> 3NF

 

❌ 왜 틀렸는가?

- A→B, B→C인 경우 A→C는 이행적 함수 종속    
- 이행적 종속성 제거는 제3정규형(3NF)의 핵심 목표  
- 1NF → 2NF는 부분 함수 종속 제거 (복합키의 일부에만 종속된 속성 제거) 

 

🔂 다음엔 어떻게 맞출것인가

- 정규화 단계마다 제거하는 종속성의 종류를 구분해서 암기
- 아래 표 반복 복습

 

📖 참고 개념 정리

정규화 단계 제거 대상 설명
1NF 비원자값, 반복 속성 속성 값이 원자값이 아닌 경우 제거
2NF 부분 함수 종속 기본키 일부에만 종속된 속성 제거
3NF 이행적 함수 종속  A→B, B→C → A→C 제거
BCNF 후보키 아닌 결정자 종속 결정자가 후보키가 아닐 경우 분해

 

📌[59] 테이블 두 개를 조인하여 뷰 V_1을 정의하고, V_1을 이용하여 V_2를 정의하였다. 다음 명령 수행 후 결과로 옳은 것은? -> 맞은건데 채점 오류

- 문제 유형 : 

- 내 답안 : V_1과 V_2 모두 삭제된다.

- 정답 : 

 

📌[60] 데이터베이스에서 병행제어의 목적으로 틀린 것은?

- 문제 유형 : 데이터베이스 트랜잭션

- 내 답안 : 데이터베이스 일관성 유지

- 정답 : 데이터베이스 공유 최소화

 

❌ 왜 틀렸는가?

- 병행제어는 트랜잭션이 동시에 수행될 때의 충돌과 오류를 방지 하기 위한 것으로, 일관성, 독립성, 원자성 유지가 핵심 목적  
- “공유 최소화”는 병행제어 목적이 아니라 병목 현상 방지나 동기화 제한의 부작용 회피 차원의 개념 

 

🔂 다음엔 어떻게 맞출것인가

- 병행제어 목적 = 일일독무 암기

(일관성 유지, 일시성 보장, 독립성 확보, 무결성 유지)

 

📖 참고 개념 정리

병행제어의 목적 설명
일관성 유지 트랜잭션 수행 전후 데이터 상태가 논리적으로 일치
고립성 각 트랜잭션이 서로 간섭 없이 수행되도록 함
원자성 트랜잭션이 전부 수행되거나 전혀 수행되지 않아야 함
무결성 유지 데이터의 규칙 및 제약조건 위반 없이 유지
공유 최소화 병행제어의 목적 아님 – 성능 관점 부수 요소

⭐4. 프로그래밍 언어 활용 (12/20)

📌[61] IP 주소 체계와 관련된 설명으로 틀린 것은? 

- 문제 유형 : 네트워크 

- 내 답안 : IPv4는 호스트 주소를 자동으로 설정하며 유니캐스트를 지원한다.

- 정답 : IPv6의 패킷 헤더는 32 object의 고정된 길이를 가진다.

 

❌ 왜 틀렸는가?

- 내 답안은 다소 애매하지만 기술적으로 틀린 건 아님
  - IPv4는 DHCP로 자동 할당 가능    
  - 유니캐스트는 IPv4에서 기본 지원
- 반면 정답 문장은 IPv6 헤더가 32 object로 구성된다"는 명백한 허위 정보
  - 실제 IPv6 헤더는 40바이트 고정 길이 , 필드는 object 개념이 아님

 

🔂 다음엔 어떻게 맞출것인가

- IPv6 구조의 헤더 길이(고정 40바이트) , 필드 이름, 옵션 처리 방식을 암기.
- 숫자 기반 오답(32 object 등)은 자주 쓰이는 함정 문장이므로 경계

 

📖 참고 개념 정리

구분 IPv4 IPv6
주소 길이  32비트 128비트
주소 표현 10진수 점 표기 16진수 콜론 표기
헤더 길이 가변  고정
헤더 구조 복잡, 옵션 포함 단순, 확장 헤더로 옵션 분리
자동 주소 설정 DHCP SLAAC
브로드캐스트 0 x (멀티캐스트사용)
유니캐스트 지원 지원

 

📌[62] 다음 C언어 프로그램이 실행되었을 때, 실행결과는? 

#include <stdio.h>
#include <memory>

int test(int argc, char* argv[])
{
    int arr[2][3] = { 1,2,3,4,5,6 };
    int (*p)[3] = NULL;
    p = arr;
    printf("%d", *(p[0] + 1) + *(p[1] + 2));  // 2 + 6 = 8
    printf("%d", *(*(p + 1) + 0) + *(*(p + 1) + 1));  // 4 + 5 = 9
    system("pause");
    return 0;
}

int main(int argc, char* argv[])
{
    return test(argc, argv);
}

- 문제 유형 : 

- 내 답안 : IPv4는 호스트 주소를 자동으로 설정하며 유니캐스트를 지원한다.

- 정답 : 

 

❌ 왜 틀렸는가?

🔂 다음엔 어떻게 맞출것인가

-

📖 참고 개념 정리

 

📌[66] JAVA의 예외와 관련된 설명으로 틀린 것은?

- 문제 유형 : 

- 내 답안 : 오동작이나 결과에 악영향을 미칠 수있는 실행 시간 동안에 발생한 오류  

- 정답 : 

 

❌ 왜 틀렸는가?

🔂 다음엔 어떻게 맞출것인가

-

📖 참고 개념 정리

 

📌[67] TCP/IP 계층 구조에서 IP의 동작 과정에서의 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 사용하는 프로토콜은? 

- 문제 유형 : 네트워크 – TCP/IP 계층 및 보조 프로토콜

- 내 답안 : ARP

- 정답 : ICMP (Internet Control Message Protocol)

 

❌ 왜 틀렸는가?

- ARP는 IP → MAC 주소 매핑을 위한 프로토콜.
- 오류 메시지(예: 목적지 도달 불가, TTL 초과 등)를 전송하는 건 ICMP임

 

🔂 다음엔 어떻게 맞출것인가

- “오류 정보 전송” or “ping 관련” 키워드 = 무조건 ICMP
- ARP는 “주소 변환” 키워드에서만 등장

 

📖 참고 개념 정리

프로토콜 계층 역할
ICMP 네트워크 계층 IP 오류 메시지 전송 (예: 목적지 없음, TTL 초과)
ARP 네트워크 계층 IP 주소 ↔ MAC 주소 변환
RARP 네트워크 계층 MAC 주소 → IP 주소 변환
IP 네트워크 계층 비연결형 패킷 전송
TCP 전송 계층 연결형, 신뢰성 있는 전송
UDP 전송 계층 비연결형, 빠른 전송
PPP 데이터 링크 계층 1:1 직렬 통신용 프로토콜로, 전화선·모뎀 연결 등에 사용.
IP, TCP 등 다양한 프로토콜 캡슐화 지원
ECP PPP의 확장 PPP에서 암호화 기능을 협상하고 설정하기 위한 제어 프로토콜 (확장 프로토콜 중 하나)

 

📌[69] 다음과 같은 형태로 임계 구역의 접근을 제어하는 상호배제 기법은?

P(S) : while S <= 0 do skip; 
S := S - 1;
V(S) : S := S +1;

- 문제 유형 : 운영체제 – 프로세스 동기화

- 내 답안 : 답 체크 X

- 정답 : 세마포어 (Semaphore)

 

❌ 왜 틀렸는가?

- 제시된 구조는 고전적인 세마포어 구현 방식    
  - `P(S)` → 진입 전 대기 (S가 0이면 skip)
  - `V(S)` → 자원 반환 시 S 값 증가  
- 기법 명칭을 보지 않고 로직 형태만 봤을 때 생소해서 연결을 놓침

 

🔂 다음엔 어떻게 맞출것인가

- P(S), V(S) 가 보이면 무조건 세마포어
- while문과 변수 감소(P), 증가(V)로 구성된 임계구역 제어 → 세마포어 고정

 

📖 참고 개념 정리

기번/알고리즘 유형 프로세스 수 특징 및 동작 방식
데커 알고리즘 소프트웨어 2개 최초의 상호배제 알고리즘, 턴 진입의사 플래그(turn)과 를 함께 사용하여 상호배제 보장
피터슨  알고리즘 소프트웨어 2개 간단하고 널리 쓰이는 방식,둘 다 진입의사를 밝히면 turn으로 조정하여 경쟁 해결
램포트  알고리즘 소프트웨어 N개 이상 숫자 티켓(ticket)을 활용하여 대기 순서 보장 (우선순위 방식) 
세마포어 하드웨어/소프트웨어 혼합  N개 이상 공유 자원 수를 정수로 관리. `P()`는 진입 대기, `V()`는 자원 반환. 음수 또는 busy-wait 없음

 

- 데커/피터슨 : 2프로세스 전용, flag + turn 조합  
- 램포트 : 티켓 번호 부여, N프로세스 간 순차적 진입 보장   
- 세마포어 : 시스템/운영체제 기반, `P(S), V(S)`로 자원 수량 제어

 

📌[73] 다음 JAVA 프로그램이 실행되었을 때, 실행결과는? 

package com.example.travelagency.common.dump;

public class indexTest {

    static void rs(char a[]){
        for(int i=0;i<a.length;i++){
            if(a[i]=='B'){
                a[i] = 'C';
            } else if (i == a.length-1) {
                a[i] = a[i-1];
            } else{
                a[i] = a[i+1];
            }
        }
    }

    static void pca(char a[]){
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
            System.out.println();
        }
    }
    public static void main(String[] args) {
        char c[] = {'A', 'B', 'D', 'D', 'A', 'B', 'C'};
        rs(c);
        pca(c);
    }
}

- 문제 유형 : Java 배열 인덱스, 조건 분기, 참조 처리

- 내 답안 : BCDABCA

- 정답 : BCDABCC

 

❌ 왜 틀렸는가?

- `rs(char[] a)` 메서드는 배열을 인덱스 순차적으로 수정하는데,  수정된 값이 다음 루프에 바로 반영되므로, 예측 시 한 번에 모든 변경을 상상하면 안 됨
- 마지막 원소 `a[i] = a[i-1]` 처리에서  → 직전 값이 이미 변경된 C라는 점을 놓침

 

🔂 다음엔 어떻게 맞출것인가

- 배열 문제는 반드시 한 칸씩 따라가며 배열의 현재 상태를 추적
- 특히, 배열 내부 값을 변경하는 경우는 변경 후의 값이 이후 루프에 영향을 주므로  → 수정된 값 기준으로 생각해야 함

 

📖 실행 흐름 및 배열 추적

char[] c = {'A', 'B', 'D', 'D', 'A', 'B', 'C'};

// rs() 실행 흐름
i=0: a[0]='A' → a[1]='B' → a[0]='B'  
i=1: a[1]='B' → 조건: 'B' → a[1]='C'  
i=2: a[2]='D' → a[3]='D' → a[2]='D'  
i=3: a[3]='D' → a[4]='A' → a[3]='A'  
i=4: a[4]='A' → a[5]='B' → a[4]='B'  
i=5: a[5]='B' → 조건: 'B' → a[5]='C'  
i=6: 마지막 → a[6] = a[5] → a[6]='C'

// 최종 배열: {'B', 'C', 'D', 'A', 'B', 'C', 'C'}

 

📌[80] UNIX 시스템의 쉘의 주요 기능에 대한 설명이 아닌 것은? 

- 문제 유형 : UNIX 쉘(Shell)의 역할 구분

- 내 답안 : 반복적인 명령울 프로그램으로 만드는 프로그래밍 기능을 제공한다.

- 정답 : 쉘 프로그램실행을 위해 프로세스와 메모리를 관리한다.  

 

❌ 왜 틀렸는가?

- 쉘은 사용자의 명령을 해석하고 실행하는 명령어 인터프리터로,  
반복 명령 작성 = 쉘 스크립트 작성 기능이 맞는 설명
- 반면, 프로세스와 메모리 직접 관리 커널(Kernel)의 역할이며, 쉘은 이를 요청만 할 수 있음

 

🔂 다음엔 어떻게 맞출것인가

- UNIX 시스템 구성요소 중  
  → 쉘은 명령 해석/스크립트,
  → 커널은 자원(프로세스/메모리) 관리라고 구분해 암기할 것

 

📖 참고 개념 정리

구성 요소 역할
사용자 명령 해석, 명령 실행, 스크립트 처리 (반복문/조건문 가능)
커널 하드웨어 제어, 프로세스 스케쥴링, 메모리/파일/장치 관리 
명령어 인터프리터 쉘 기능의 핵심 - BASH, CSH 등 

⭐5. 정보시스템 구축 관리 (16/20)

📌[83] 위조된 매체 접근제어(MAC) 주소를 지속적으로 네트워크로 흘려보내, 스위치 MAC 주소 테이블의 저장 기능을 혼란시켜 더비 허브처럼 작동하게 하는 공격은?

- 문제 유형 : 네트워크 보안 

- 내 답안 : LAN Tapping

- 정답 : Switch Jamming

 

❌ 왜 틀렸는가?

- LAN Tapping 물리적인 회선 도청 장비 설치를 의미하며,  스위치의 MAC 테이블을 과부하시켜 허브처럼 만드는 행위와 무관함  
- Switch Jamming은  수천 개의 가짜 MAC 주소를 보내 스위치가 MAC 주소 저장을 포기하게 유도 → 이로 인해 스위치는 모든 트래픽을 모든 포트에 전달 →  허브처럼 동작하게 됨

 

🔂 다음엔 어떻게 맞출것인가

- MAC 주소 과부하 + 허브처럼 동작" → Switch Jamming 연상 고정
- LAN Tapping 물리적 접근/스니핑 장비 설치 개념으로 분리해서 암기

 

📖 참고 개념 정리

용어 설명
Switch Jamming 위조된 수많은 MAC 주소를 스위치에 지속 전송해 MAC 테이블을 오버플로우 시킴. 
스위치는 브로드캐스트처럼 동작하게 되고, 스니핑 가능
LAN Tapping 네트워크 케이블에 물리적으로 장비를 연결해 패킷을 몰래 가로채는 수동적 도청 기법
MAC Flooding Jamming과 유사하게 MAC 주소를 넘쳐나게 하여 스위치 기능 무력화
Hub 브로드캐스트 방식으로 트래픽을 전송하는 단순 장비 (스위치보다 보안 취약)
FTP Flooding FTP 프로토콜을 악용해 다량의 접속 요청 또는 명령어를 반복 전송하여 서버 자원을 고갈시키는 DoS 공격.
특히 제어 채널 연결 유지 특성을 악용
Parsing  데이터를 처리(parsing)하는 과정에서 버퍼 오버플로우, 메모리 누수, 무한 루프 등 비정상 동작을 유도하는 공격
Ex: XML Bomb, JSON 구조 반복 등

 

📌[86] 소프트웨어 생명주기 모델 중 V 모델과 관련한 설명으로 틀린 것은? 

- 문제 유형 : 소프트웨어 생명주기(SDLC) 모델 

- 내 답안 : 개발 작업과 검증 작업 사이의 관계를 명확히 들어내 놓은 폭포수 모델의 변형이라고 볼 수 있다.

- 정답 : 요구분석 및 설계 단계를 거치지 않으며 항상 통합 테스트를 중심으로 v 형태를 이룬다.

 

❌ 왜 틀렸는가?

- 내 답안은 실제로 V 모델의 특징임  
  → V 모델은 폭포수 모델의 테스트 보완형 변형 모델  
- 반면 정답 문장은 요구분석과 설계를 생략 한다고 하여 명백히 틀림
  → V 모델은 요구분석–설계–구현–테스트 단계를 모두 포함하며  
     각 개발 단계에 대응되는 검증 단계가 연결됨 (V 형태)

 

🔂 다음엔 어떻게 맞출것인가

- 요구분석·설계가 없다는 문장이 나오면 100% 오답
- V 모델은 왼쪽: 개발 / 오른쪽: 대응 테스트 라는 구조 고정

 

📖 참고 개념 정리

구분 설명
V 모델 폭포수 모델을 기반으로 하되, 각 개발 단계와 1:1 대응하는 테스트 단 가 포함되어 V자 형태를 이룸
주요 특징 요구사항 분석 → 시스템 설계 → 상세 설계 → 구현 → 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
목적 개발과 테스트의 단계별 대응 관계를 명확히 하여 품질 확보
키워드 암기 "왼쪽 개발 / 오른쪽 검증", "폭포수 + 테스트 보완", "단계 대응"

 

📌[87] 블루투스공격과 해당 공격에 대한 설명이 올바르게 연결된 것은? 

- 문제 유형 : 무선 네트워크 보안 – 블루투스 공격 기법 종류 및 정의

- 내 답안 : 답 체크 X

- 정답 : 블루프린팅 - 블루투스 공격 장치의 검색 활동을 의미

 

❌ 왜 틀렸는가?

- 블루투스 공격 종류 중 생소한 항목(블루프린팅)에 대한 학습 부족
- 보통 재킹/스너핑/버깅만 외우고, 블루프린팅처럼 정보 수집 목적의 사전 단계 개념을 놓침

 

🔂 다음엔 어떻게 맞출것인가

- 블루투스 공격 4종을 목적별로 암기:
  - 블루프린팅 → 정보 수집(검색)
  - 블루재킹 → 메시지 전송(스팸)
  - 블루스너핑 → 데이터 탈취
  - 블루버깅 → 원격 제어/권한 탈취

 

📖 참고 개념 정리

공격 유형 설명
블루프린팅 블루투스 장치 검색 및 정보 수집 (모델, 기기명 등 탐색 단계)
블루재킹 블루투스 메시지 무단 전송 (푸시 스팸)
블루스너핑 주소록, 파일 등 정보 탈취
블루버깅 권한 탈취 후 원격 명령 실행, 통화 도청 등 가능

 

📌[88] DOS 공격과 관련한 내용으로 틀린 것은?

- 문제 유형 : 

- 내 답안 : LAND 공격은 패킷 전송 시 출발지 IP 주소와 목적지 IP 주솟값을 똑같이 만들어서 공격 대상에게 보내는 공격 방법이다.

- 정답 : SMURF 공격은 멀티캐스를 활용하여 공격 대상이 네트워크의 임의의 시스템에 패킷을 보내게 만드는 공격이다.

 

❌ 왜 틀렸는가?

LAND 공격 설명은 정확함
- DoS 공격들은 각자 고유한 패킷 특징이 있으므로, 그것과 비교해야 함

 

🔂 다음엔 어떻게 맞출것인가

- 각 공격의 구체적 동작 방식과 패킷 구조를 암기해서, 설명이 기술적으로 틀렸는지 판단할 것
- LAND, Ping of Death, Teardrop, SYN Flood 등 자주 출제됨

 

📖 참고 개념 정리

공격명 설명
LAND 공격 출발지 IP = 목적지 IP로 만든 패킷을 전송, 응답 루프 유도
PING OF DEATH ICMP 패킷 크기를 65,535바이트 이상으로 만들어 시스템 다운 유도
TEARDROP IP 조각 offset을 비정상 설정 → 조합 불가능하게 하여 시스템 오류 유발
SYN FLOOD  3-way 핸드셰이크 요청만 보내고 ACK 미응답 → 연결 대기 상태 고갈
SMURF IP 브로드캐스트 주소로 ICMP 요청 → 대량 응답이 피해자에게 집중
FRAGGLE Smurf와 유사하지만 UDP 사용 (주로 포트 7)

 

반응형