정처기 실기 [12] 2025년 1회 기출 오답노트 (핵심 개념 정리)

2026. 4. 2. 23:20·정보처리기사 오답노트
728x90

해당 글은 틀린 문제만 정리한 오답노트입니다.
시험에서 헷갈리기 쉬운 개념 위주로 정리했습니다.


1. 오류 검출 코드

Q. 아래의 내용에서 설명 글의 괄호안의 용어를 영문 약자로 작성하시오.

(        ) 은/는 3글자의 영어 약자로 이루어진 오류 기법으로 데이터를 전송하거나 저장할 때 데이터의 오류를 감지하는 데 사용되는 오류 검출 코드이다.


(        ) 은/는 데이터에 체크섬을 추가하여 데이터를 전송하거나 저장한 후, 수신 또는 읽을 때 이 체크섬을 다시 계산하여 데이터가 변경되었는지 확인하는 기법이다.


(        ) 은/는 데이터 전송의 안정성을 높이는 데 중요한 역할을 한다.


데이터는 이진수(0과 1)로 표현되며 정해진 다항식(x³ + x + 1)을 기반으로 데이터를 2진수 나눗셈하고나머지를 (       ) 값으로 삼는다.

.

 

정답 : CRC

나의 오답 : HASH

 

핵심 포인트

  • CRC = 다항식 기반 나눗셈 후 나머지 값으로 오류 검출
  • HASH는 무결성 확인 (보안) 목적 → 완전히 다른 개념

한줄요약
오류 검출(전송) = CRC / 무결성(보안) = HASH


2. IP

Q. IP 주소가 192.168.35.10, 서브넷 255.255.252.0인 PC에서 브로드캐스팅으로 다른 IP로 정보를 전달한다고 할 때 수신할 수 있는 알맞는 IP를 보기에서 골라 모두 작성하시오.

[보기]
ㄱ. 192.168.34.1 
ㄴ. 192.168.32.19
ㄷ. 192.168.35.200
ㄹ. 192.168.33.138
ㅁ. 192.168.35.50

 

정답 : ㄱ, ㄴ, ㄷ, ㄹ, ㅁ

나의 오답 : ㄴ, ㅁ

 

핵심 포인트

1. 255.255.252.0 → /n 구하기
- 255.255.252.0 : 2진수로 바꾸면

255 = 11111111
255 = 11111111
252 = 11111100
0   = 00000000

 

앞에서부터 1의 개수 세기

- 8 + 8 + 6 = 22

 

2. 블록 크기 (256 - 서브넷 값) 

-“255 아닌 옥텟” 기준으로 블록 계산 : 3번쨰 값

- 256 - 252 : 4

// 3번째 옥텟을 4씩 끊는다
0 ~ 3
4 ~ 7
8 ~ 11
...
32 ~ 35
36 ~ 39
...

 

3. 네트워크 범위 구하기

- 192.168.32.0 ~ 192.168.35.255

- 네트워크 주소: 192.168.32.0
- 브로드캐스트: 192.168.35.255

 

3. 같은 네트워크면 전부 수신 가능

한줄요약
/22 = 4개 묶음 (32~35 대역)
/22 → 3번째 옥텟 기준 / 블록 4 → 32~35 범위

 


3. C 언어

Q. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

#include <stdio.h>
char Data[5] = {'B', 'A', 'D', 'E'};
char c;

int main(){
    int i, temp, temp2;

    c = 'C';
    printf("%d\n", Data[3]-Data[1]);

    for(i=0;i<5;++i){
        if(Data[i]>c)
            break;
    }

    temp = Data[i];
    Data[i] = c;
    i++;

    for(;i<5;++i){
        temp2 = Data[i];
        Data[i] = temp;
        temp = temp2;
    }

    for(i=0;i<5;i++){
        printf("%c", Data[i]);
    }
}

 

정답 :

4

BACDE

 

나의 오답 :

4

CDEBA

 

핵심 포인트

1. 첫 출력

Data[3] - Data[1]
= 'E' - 'A'
= 69 - 65 = 4

 

2. 삽입 위치 찾기

c = 'C'
Data = B A D E
 

'C'보다 큰 첫 값 찾기

  • B < C
  • A < C
  • D > C → 여기서 break (i=2)

3. 삽입 + 밀기

// i = 2
temp = Data[i] → D
Data[i] = C → B A C E

이후 shift

D → 뒤로 밀림
 

최종 : B A C D E


핵심 포인트

  • 삽입 정렬 방식
  • temp로 값 보관 후 뒤로 밀기

한줄요약
"값 넣고 뒤로 밀기" = 삽입 로직


4. C 언어

Q. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

#include <stdio.h>
#include <stdlib.h>

void set(int** arr, int* data, int rows, int cols) {
    for (int i = 0; i < rows * cols; ++i) {
        arr[((i + 1) / rows) % rows][(i + 1) % cols] = data[i];
    }
}

int main() {
    int rows = 3, cols = 3, sum = 0;
    int data[] = {5, 2, 7, 4, 1, 8, 3, 6, 9}; 
    int** arr;
    arr = (int**) malloc(sizeof(int*) * rows);
    for (int i = 0; i < cols; i++) {
        arr[i] = (int*) malloc(sizeof(int) * cols);
    }

    set(arr, data, rows, cols);

    for (int i = 0; i < rows * cols; i++) {
        sum += arr[i / rows][i % cols] * (i % 2 == 0 ? 1 : -1);
    }

    for(int i=0; i<rows; i++) {
        free(arr[i]);
    }
    free(arr);

    printf("%d", sum);
}

 

정답 : 13

나의 오답 : -1

 

핵심 포인트

  • 인덱스 계산 + 부호 패턴 같이 봐야 함
  • (i % 2 == 0) → 짝수 +, 홀수 -

1. 배열 채우기 규칙

arr[((i+1)/rows)%rows][(i+1)%cols]
 

일반 순서가 아님 → 비틀어진 인덱스

 

2. 합 계산

sum += 값 * (짝수:+, 홀수:-)
 

패턴 : + - + - + - ...

한줄요약
"배열 채우기 = 부호 교차 계산"


5. 결합도

Q. 다음은 결합도와 관련된 내용이다. 보기에 알맞는 답을 골라 작성하시오.

(1) 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도

(2) 모듈 간의 인터페이스로 배열이나 오브젝트, 자료구조 등이 전달되는 경우의 결합도

(3) 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도

 

[보기] : ㄱ. 자료 결합도  ㄴ. 스탬프 결합도 ㄷ. 제어 결합도  ㄹ. 공통 결합도  ㅁ. 내용 결합도  ㅂ. 외부 결합도

 

정답

  • ㅁ. 내용 결합도
  • ㄴ. 스탬프 결합도
  • ㄹ. 공통 결합도

나의 오답 :

  • ㄴ. 스탬프 결합
  • ㄱ. 자료 결합도
  • ㅂ. 외부 결합도

핵심 포인트

  • 내용 → 내부 직접 접근 (최악)
  • 스탬프 → 구조체 전달
  • 공통 → 전역 변수 공유

한줄요약
내부접근 > 전역 > 구조체 순으로 결합 강함


6. JAVA 코드

Q. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

public class Main {
    public static void main(String[] args) {
        new Child();
        System.out.println(Parent.total);
    }
}


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

    public Parent() {
        total += (++v);
        show();    
    }

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


class Child extends Parent {
    int v = 10;

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

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

 

정답 : 54

나의 오답 : 48

 

핵심 포인트

 

  • 생성자 실행 순서: 부모 → 자식
  • show()는 오버라이딩 적용됨 (동적 바인딩)

1. Child 생성 → Parent 먼저 실행

Parent()
 
  • v = 1 → ++v = 2
    total += 2 → total = 2
  • show() → 오버라이딩 (Child 실행됨!!)
total += total * 2 → 2 + 4 = 6
 

2. Child 생성자

v = 10 → v += 2 → 12
total += v++ → +12 → total = 18

 

show()

total += total * 2 → 18 + 36 = 54
 

 

한줄요약
생성자 중에도 오버라이딩 적용됨


7. 파이썬

Q. 다음은 파이썬에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

class Node:
    def __init__(self, value):
        self.value = value
        self.children = []

def tree(li):
    nodes = [Node(i) for i in li]
    for i in range(1, len(li)):
        nodes[(i - 1) // 2].children.append(nodes[i])
    return nodes[0]

def calc(node, level=0):
    if node is None:
        return 0
    return (node.value if level % 2 == 1 else 0) + sum(calc(n, level + 1) for n in node.children)

li = [3, 5, 8, 12, 15, 18, 21]

root = tree(li)

print(calc(root))

 

정답 : 13

나의 오답 : 10

 

핵심 포인트

  • 완전 이진트리 구조
  • 홀수 레벨만 합산

트리 구조

        3 (0)
      /   \
    5(1)  8(1)
   / \    / \
 12 15  18 21
 

calc 로직

level % 2 == 1 → 값 더함
 

레벨1만 더함 : 5 + 8 = 13

 

한줄요약
홀수 레벨 노드 합


8. C 언어

Q. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

#include <stdio.h>   
#include <stdlib.h>  

typedef struct Data {
    int value;
    struct Data *next;
} Data;

Data* insert(Data* head, int value) {
    Data* new_node = (Data*)malloc(sizeof(Data));
    new_node->value = value;
    new_node->next = head;
    return new_node;
}

Data* reconnect(Data* head, int value) {
    if (head == NULL || head->value == value) return head;
    Data *prev = NULL, *curr = head;
    while (curr != NULL && curr->value != value) {
        prev = curr;
        curr = curr->next;
    }

    if (curr != NULL && prev != NULL) {
        prev->next = curr->next;
        curr->next = head;
        head = curr;
    }
    return head;
}

int main() {

    Data *head = NULL, *curr;
    for (int i = 1; i <= 5; i++)
        head = insert(head, i);
    head = reconnect(head, 3);
    for (curr = head; curr != NULL; curr = curr->next)
        printf("%d", curr->value);
    return 0; 
}

 

정답 : 35421

나의 오답 : 

 

핵심 포인트

  • 연결리스트에서 노드 위치 이동
  • prev / curr 조작 중요

1. insert → 역순 생성

1→2→3→4→5 입력
→ 5→4→3→2→1
 

2. reconnect(3)

3 찾기

5→4→3→2→1
 

3을 맨 앞으로 이동

3→5→4→2→1

한줄요약
특정 노드를 맨 앞으로 이동


9. C 언어

Q. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

#include <stdio.h>

typedef struct student {
    char* name;
    int score[3];
} Student;

int dec(int enc) {
    return enc & 0xA5;
}

int sum(Student* p) {
    return dec(p->score[0]) + dec(p->score[1]) + dec(p->score[2]);
}

int main() {
    Student s[2] = { "Kim", {0xA0, 0xA5, 0xDB}, "Lee", {0xA0, 0xED, 0x81} };
    Student* p = s;
    int result = 0;

    for (int i = 0; i < 2; i++) {
        result += sum(&s[i]);
    }
    printf("%d", result);
    return 0;
}

 

정답 : 908

나의 오답 : 808

 

핵심 포인트

  • & = 비트 AND
  • 16진수 → 10진수 변환 필수

AND 연산

enc & 0xA5

 

각 값 계산 

1) Kim 계산

① 0xA0 & 0xA5

0xA0 = 1010 0000
0xA5 = 1010 0101

1010 0000 = 0xA0 = 160


② 0xA5 & 0xA5

1010 0101
1010 0101

1010 0101 = 0xA5 = 165


③ 0xDB & 0xA5

0xDB = 1101 1011
0xA5 = 1010 0101

1000 0001 = 0x81 = 129


Kim 총합 : 160 + 165 + 129 = 454


(2) Lee 계산
① 0xA0 & 0xA5

= 0xA0 = 160


② 0xED & 0xA5

0xED = 1110 1101
0xA5 = 1010 0101

1010 0101 = 0xA5 = 165


③ 0x81 & 0xA5

0x81 = 1000 0001
0xA5 = 1010 0101

1000 0001 = 0x81 = 129


Lee 총합 : 160 + 165 + 129 = 454
result = 454 + 454 = 908

 

한줄요약
score를 0xA5로 AND 연산해 필요한 비트만 남기고 모두 더하면 최종 결과

최종 핵심 요약

  • CRC = 다항식 기반 오류 검출
  • 서브넷 = 블록 크기 계산 핵심
  • C = 삽입/포인터/비트연산 자주 출제
  • Java = 생성자 + 오버라이딩 순서 중요
  • Python = 재귀 + 트리 구조
  • 결합도 = 내용 > 공통 > 스탬프

정처기 실기 기출 오답노트 시리즈 → 2021 ~ 2025 전 회차 정리 진행중
모든 정처기 수험생분들 응원합니다 :D

728x90

'정보처리기사 오답노트' 카테고리의 다른 글

정처기 실기 [14] 2025년 3회 기출 오답노트 (핵심 개념 정리)  (0) 2026.04.07
정처기 실기 [13] 2025년 2회 기출 오답노트 (핵심 개념 정리)  (0) 2026.04.07
정처기 실기 [11] 2024년 3회 기출 오답노트 (핵심 개념 정리)  (0) 2026.04.01
정처기 실기 [10] 2024년 2회 기출 오답노트 (핵심 개념 정리)  (0) 2026.03.31
정처기 실기 [09] 2024년 1회 기출 오답노트 (핵심 개념 정리)  (0) 2026.03.30
'정보처리기사 오답노트' 카테고리의 다른 글
  • 정처기 실기 [14] 2025년 3회 기출 오답노트 (핵심 개념 정리)
  • 정처기 실기 [13] 2025년 2회 기출 오답노트 (핵심 개념 정리)
  • 정처기 실기 [11] 2024년 3회 기출 오답노트 (핵심 개념 정리)
  • 정처기 실기 [10] 2024년 2회 기출 오답노트 (핵심 개념 정리)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    구현
    level1
    완전탐색
    피보나치
    브루트포스
    백준
    springboot
    자료구조
    자바
    정처기오답노트
    기출문제
    정처기
    알고리즘
    Level2
    실기
    정렬
    java
    dp
    시뮬레이션
    정보처리기사
    정처기실기
    배열
    프로그래머스
    수학
    정보처리기사 실기 기출문제
    solved.ac
    코딩테스트
    백엔드개발자
    문자열
    level0
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
정처기 실기 [12] 2025년 1회 기출 오답노트 (핵심 개념 정리)
상단으로

티스토리툴바