반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 해당 글은 2017년 개정된 이후 기출 문제 중에서 2019년 1회부터 가장 최근에 있었던 2021년 1회까

developer-rooney.tistory.com

알고리즘 - C언어


1. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.(5점)

#include <stdio.h> func(int *p) { printf("%d\n", *p); printf("%d\n", p[2]); } main() { int a[7] = {1,2,3,4,5}; func(a); func(a + 2); }


정답

1
3
3
5

해설

C언어 포인터 문제입니다. func 함수에 매개 변수로 들어오는 p의 값을 이용하여 두 개의 printf에 각각 *p, p[2]를 출력합니다.

main에서 func는 func(a)와 func(a + 2) 이렇게 두 번 실행됩니다.

func(a) 실행 시 : 배열 a의 0번째 값인 1을 출력하고 2번째 값인 3을 출력

func(a + 2) 실행 시 : 배열 a의 2번째 값이 3을 출력하고 4번째 값 더한 값인 5를 출력

C언어 포인터에 대한 설명은 하단 링크를 참고해 주세요.

[C언어] 포인터 변수

C언어 포인터 포인터는 변수의 주소를 담는다. #include main () { int a = 20; // *b는 포인트 변수 int *b; // b는 a의 주소를 가리킴 b = &a; // b가 가리키는 곳에 b가 가리키는 곳의 값 + 10을 넣어준다. *b..

developer-rooney.tistory.com



2. 다음은 12와 6을 입력받아 <출력>과 같은 결과를 나타내는 프로그램을 C언어로 구현한 것이다. 프로그램을 분석하여 괄호 (1) ~ (4)에 가장 적절한 답을 적으시오.(10점)

<코드>

#include <stdio.h> int sub(int i, int j) { return i - j; } int add(int i, int j) { return i + j; } main() { int i, j, result; int (*pf)(int, int); scanf("%d, $d", &i, &j); pf = ( 1 ); ( 2 ) = pf(i, j); printf("%d, ", result); ( 3 ) = sub; result = ( 4 ); printf("%d", result); }


<출력>

18, 6

정답

(1) add
(2) result
(3) pf
(4) pf(i, j)

해설

이 문제는 포인터 함수를 이용하는 문제입니다. 우선 출력 값을 확인해보니 입력된 12와 6을 더한 값 18과 뺀 값 6이 출력된 것을 볼 수 있고 이 역할을 담당하는 함수는 각각 add와 sub입니다. main에서 *pf는 함수를 가리키는 포인터 함수로 지정되었고 처음 실행된 결과가 18이므로 두 값을 더하는 함수인 add가 (1)에 들어간 후 printf를 통해 출력되는데 pf = ( 1 ); 과 printf("%d, ", result); 사이에 result가 없으므로 ( 2 )는 result가 들어갑니다. 그 후에 pf는 add에서 sub로 바꿔야 하기 때문에 ( 3 )에는 pf가 들어가고 ( 4 )에는 result에 6을 담기 위해 12에서 6을 빼주는 함수를 이용한 sub(i, j)가 들어갑니다.

데이터베이스


1. 다음 데이터베이스와 관련한 다음 설명에서 괄호 (1) ~ (4)에 가장 적절한 답을 적으시오.(10점)

<설명>

데이터베이스를 관리하기 위한 필수 기능에는 정의 기능, (1) 기능, 제어 기능이 있다. 정의 기능은 데이터의 타입과 구조, 데이터가 데이터베이스에 저장될 때의 제약 조건 등을 명시하는 기능이고, (1) 기능은 체계적 데이터 처리를 위해 데이터 접근 기능(검색, 삽입, 삭제, 갱신 등)을 명시하는 기능이며, 제어 기능은 데이터의 정확성과 안전성을 유지하기 위해 무결성, 보안 및 권한 검사, 병행 제어 등을 명시하는 기능이다.

위와 같은 기능을 이용하여 데이터베이스를 정의하고 제어하는 사람 또는 그룹을 (2)(이)라고 한다. (2)(은)는 데이터베이스 관리 시스템과 컴퓨터 시스템, 조직 내의 전산 업무에 상당한 지식을 보유해야 하고, 데이터베이스를 설계, 관리, 운용 및 통제하며, 효율성과 경제적인 효용성을 높이기 위해 시스템을 감시하고 성능을 분석한다.

관계 데이터베이스에서 관계 내의 특정 튜플을 식별할 수 있는 키 필드인 (3)이(가) 있어야 한다. 데이터베이스 설계 시 설계자는 이 중 하나를 기본키(Primary Key)로 설정해야 하며, 기본키로 설정되지 않은 (3)(은)는 대체키(Alternate Key)라고 부른다.

관계형 데이터 모델에서 식별자의 역할을 하는 기본키와 달리 외래키(Foreign Key)는 다른 릴레이션의 기본키를 (4)하는 속성 또는 속성들의 집합을 의미한다. 릴레이션 간의 관계를 표현할 때 사용하며, (4) 릴레이션의 기본키와 동일한 키 속성을 갖는다.

정답

(1) 조작
(2) DBA
(3) 후보키
(4) 참조

해설

데이터베이스에 대한 설명 중 빈칸을 채우는 문제입니다. 데이터베이스의 기능에는 정의, 조작, 제어 기능이 있고 각각 DDL, DML, DCL을 이용합니다. 데이터베이스를 정의하고 제어하는 사람 또는 그룹을 'DBA(DataBase Administer)' 라고 부르며, 튜플을 식별할 수 있는 유일한 키 필드를 '후보키' 라고 부릅니다. 후보키 중 선택된 특정 키를 '기본키(Primary Key)' 라고 하는데 기본키가 아닌 나머지 후보키는 '대체키(Alternate Key)' 가 됩니다. 관계형 데이터베이스에서 하나의 릴레이션이 다른 릴레이션을 '참조' 할 수 있고 이 때 식별을 위해 사용하는 키가 '외래키(Foreign Key)' 입니다.

2. <직원>과 <동호회> 테이블을 참고하여 다음의 각 질문에 대한 SQL문을 완성하시오.(15점)

<직원>

직원코드 이름 부서
12345 루니 인사
12346 램파드 영업
12347 비야 인사


<동호회>

신청코드 이름 분야 활동점수
A-1000 루니 등산 2500
B-1000 램파드 수영 4700
C-1000 비야 배드민터 1800

* 시험 문제에서는 더 많은 데이터가 들어가지만 테이블의 속성만으로도 문제를 풀 수 있어 모두 넣지 않았습니다.


(1) <직원> 테이블에서 이름을 조회하는 SQL문을 완성하시오.
SELECT ( ) FROM 직원;

(2) <직원> 테이블에서 부서가 '인사'인 튜플을 검색하는 SQL을 완성하시오.
SELECT * FROM 직원 ( ) 부서 = '인사';

(3) <동호회> 테이블에서 분야가 '등산'이고 활동점수가 3000 이상인 튜플을 검색하는 SQL을 완성하시오.
SELECT * FROM 동호회 WHERE 분야 = '등산' ( ) 활동점수 >= 3000;

(4) <동호회> 테이블에서 분야만 검색하되, 같은 분야는 한 번만 검색하는 SQL문을 완성하시오.
SELECT ( ) FROM 동호회;

(5) <동호회> 테이블에서 이름과 분야를 검색하되, 활동점수를 기준으로 오름차순 정렬하는 SQL문을 작성하시오.
SELECT 이름, 분야 FROM 동호회 ( ) 활동점수;

정답

(1) 이름
(2) WHERE
(3) AND
(4) DISTINCT 분야
(5) ORDER BY

해설

SQL 문법에 대한 문제입니다. (1)에서는 이름을 조회하라고 했으므로 이름 을 입력하면 되고 (2)에서는 부서가 '인사'인 특정 튜플을 검색하라고 했으니 WHERE가 들어갑니다. (3)에서는 WHERE절에 조건을 두 개 걸어주기 위해 AND를 이용하고 (4)에서는 특정 속성 검색 중 결과에서 중복을 제거하기 위해 DISTINCT를 사용하며, (5)에는 오름차순 정렬을 위해 ORDER BY를 입력합니다.

반응형

+ Recent posts