공부/자격증

정보 처리 기사 실기 풀이(2024년도 02회)

edcrfv458 2025. 4. 5. 22:31

2. JAVA

  • == 연산자
    • 문자와 숫자인 경우에는 값이 정해져있으므로 그 값만을 비교
    • 문자열이나 리스트에서는 값이 정해져있지 않으므로 주소를 비교

 

4. 이론 (용어)

  • 시스템의 성능을 향상하고 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
  • 이를 수행하면 시스템의 성능이 향상되고 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하
  • 과도한 수행은 오히려 성능을 저하
    • 정답: 반정규화, 비정규화, 역정규화, Denormalization

 

5. C

int a = 11;
int b = 19
switch(a) {
	case 1:
    	b += 1;
    case 11:
    	b += 2;
    default:
    	b += 3;
        break;
}
  • a는 11이므로 case 11이 실행되고 b는 21이 됨
  • 하지만 break가 없으므로 종료되지 않음
  • default도 실행되서 b는 24가 됨
  • break를 만나 종료

 

7. JAVA

  • &&: 2개의 조건 모두 참인 경우에만 True
  • ||: 2개의 조건 중 하나라도 참이면 True

 

8. C

  • 아스키코드
    • 소문자: a(97) ~ z(122)
    • 대문자: A(65) ~ Z(90)

 

9. C

int main() {
	int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
	int* parr[2] = {arr[1] + arr[2]};
	printf("%d", parr[1][1] + *(parr[1]+2) + **parr);
}
  • arr은 3*3 배열
    • parr[1][1]: arr[2][1]: 3행 2열
    • *(parr[1] + 2): == *(arr[2] + 2)은 3행 3열
    • **parr: == *(parr[0]) == (arr[1][0])은 2행 1열

 

10. SQL (릴레이션 스키마)

# 1. (추가)
INSERT INTO 학부(학번, 이름, 주소, 나이) VALUES (240912, '최재균', '서울', 20);

# 2. (검색 후 테이블에 추가)
INSERT INTO 학생(학번, 이름, 나이, 학과) SELECT 학번, 이름, 나이, '컴퓨터공학' 
	   FROM 학부 WHERE 이름 = '최재균'
       
# 3. (조회)
SELECT * FROM 학생;

# 4. (변경)
UPDATE 학생 SET 학과 = '휴학' WHERE 학번 = 240912;

 

11. SQL (용어)

  • 카디널리티(Cardinality) ➡️ 행의 수
  • 디그리(Degree) ➡️ 열의 수

 

12. 이론 (프로토콜)

  • 네트워크 계층에서 IP 패킷 단위의 변조 방지 및 은닉 기능을 제공하는 프로토콜
  • 주요 구성 요소에는 AH, ESP, SA, IKE
  • 주요 기능에는 암호화, 무결성, 인증, 재전송 방지
    • 정답: IPsec(IP Security)

 

13. 이론 (보안 알고리즘)

  • 2001년 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘
  • DES의 한계를 느낀 NIST에서 공모한 후 발표
  • 블록 크기는 128비트이며, 키 길이에 따라 명칭 뒤에 128, 192, 256을 붙여 구분
    • 정답: AES(Advanced Encryption Standard)

 

14. 이론 (네트워크)

  • 가상 회선(Virtual Circuit): 연결형 통신에서 주로 사용되는 방식으로, 출발지와 목적지의 전송 경로를 미리 연결하여 논리적으로 고정한 후 통신하는 방식
  • 데이터 그램(Data gram): 비연결형 통신에서 주로 사용되는 방식으로, 사전에 접속 절차를 수행하지 않고 헤더에 출발지에서 목적지까지의 경로 지정을 위한 충분한 정보를 붙여서 개별적으로 전달하는 방식

 

15. 이론 (응집도)

  • 약한 것
    • 우연적 응집도: 서로 관련 없는 요소
    • 논리적 응집도: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소
    • 시간적 응집도: 특정 시간에 처리
    • 절차적 응집도: 기능을 순차적으로 수행
    • 통신(교환)적 응집도: 동일한 입력과 출력을 사용해 서로 다른 기능을 수행
    • 순차적 응집도: 출력 데이터를 그 다음 활동의 입력 데이터로 사용
    • 기능적 응집도: 기능 요소들이 단일 문제와 연관  
  • 강한 것

 

16. OS (스케줄링)

  • 비선점형: 프로세스가 CPU 할당받으면 끝날때까지 뺏지 못함
    • FIFO
      • 먼저 들어온 것 먼저 처리
    • SJF (Shortest Job First)
      • 실행 시간 짧은 프로세스 우선 처리
    • Priority
      • 각각의 프로세스에 우선 순위가 있음
      • 오래 대기한 작업의 우선 순위를 높여주는 방식
  • 선점형: 프로세스가 CPU 할당받아 실행중인데 강제로 뺏을 수 있음
    • 라운드 로빈 (RR)
      • 각각의 프로세스에 동일한 할당 시간을 부여해 해당 시간 동안 CPU 이용하게 함
      • 할당 시간 내에 처리하지 못하면 강제로 다음 작업으로 넘어감
    • SRT(Shortest Remaining Time, SRTF)
      • 각 시간에서 가장 짧은 실행 시간 가진 프로세스 처리
      • 더 짧은 실행 시간 가진 프로세스 있다면 그것을 처리
    • 다단계 큐 (Multilevel Queue)
      • 우선 순위에 따른 준비 큐가 여러 개의 큐들로 나뉘고 각각의 큐는 각자의 스케줄링 알고리즘 보유
      • 우선 순위 높은 큐부터 처리되기 때문에 낮은 큐의 프로세스가 처리가 안 되는 기아 현상 발생 가능성 존재
      • 각 큐사이에서 프로세스들이 이동할 수 없어서 유연성이 떨어짐

 

17. 이론 (디자인 패턴)

  • 자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
  • 내부 표현 방법의 노출 없이 순차적인 접근이 가능
    • 정답: Iterator
  • Command: 요청을 객체로 캡슐화해 요청을 매개변수화하고, 요청을 큐에 저장하거나 로깅하고 실행을 지연
  • Interpreter: 언어나 문법에 대한 해석기를 제공해, 주어진 언어로 표현된 문제를 해결
  • Mediator: 객체 간의 상호 작용을 캡슐화해, 객체 간의 직접적인 통신을 방지
  • Observer: 객체 간의 일대다 종속 관계를 정의해, 한 객체의 상태 변경이 다른 객체들에게 알려지도록 함

 

18. 이론 (결합도)

  • 약한 것
    • 자료 결합도: 자료 요소로만 구성
    • 스탬프 결합도: 자료 구조가 전달
    • 제어 결합도: 논리적인 흐름을 제어
    • 외부 결합도: 외부의 다른 모듈에서 참조
    • 공유 결합도: 공유되는 공통 데이터 영역(전역 변수)
    • 내용 결합도: 내부 기능 및 그 내부 자료를 직접 참조하거나 수정
  • 강한 것

 

19. C

#include <stdio.h>

struct node {
	int data;
    struct node *Next;
};

int main( ) {
	struct node *head = NULL;
    struct node a = {10, 0};
    struct node b = {20, 0};
    struct node c = {30, 0};
    head = &a;
    a.Next = &b;
    b.Next = &c;
    printf("%d", head -> Next -> data);
}
  • head 노드가 존재해서 head -> Next가 a인 줄 알았는데 그게 아님
  • head = &a 라서 head가 a임
  • 그래서 head -> Next는 b

 

20. 이론 (라우터)

  • RIP(Routing Information Protocol)
    • 홉 카운트, 즉 가장 적은 수의 라우터를 거쳐가는 경로를 선택